Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > IOCTLO_ в Vista


Автор: artem1987 20.10.2006, 16:40
как использовать IOCTL_DISK_GET_PARTITION_INFO  в WinVista  чтобы DeviceIOControl не вернул ошибку Access denied
как в CreateFile обратиться с read only access?

Автор: Snowy 20.10.2006, 16:49
Второй параметр GENERIC_READ    
Пятый OPEN_EXISTING

Автор: artem1987 20.10.2006, 17:03
если отключить UAC то все работает как в ХР
в висте если включен UAC то c GENERIC_READ  CreateFIke получает INVALID_HANDLE_VALUE 
но чтобы работал IOCTL_DISK_GET_DRIVE_GEOMETRY второй параметр можно сделать 0,
а вот для IOCTL_DISK_GET_PARTITION_INFO нужно что-то...
нашел
Цитата

Security Check Process in Windows Vista
When an application attempts to open a handle to the device interface, the I/O manager checks whether the user has been granted the access permissions that are requested in the CreateFile call. If yes, the handle is opened; otherwise, the call fails with error ACCESS_DENIED.
After the handle is opened, the application can send commands directly to the device, typically by using an IOCTL. For example, to send a SCSI pass-through command, an application would use IOCTL_SCSI_PASS_THROUGH or IOCTL_SCSI_PASS_THROUGH_DIRECT.
Each IOCTL has the required access permissions encoded. For example:
•    IOCTL_DISK_GET_PARTITION_INFO requires just Read access.
•    IOCTL_SCSI_PASS_THROUGH and IOCTL_SCSI_PASS_THROUGH_DIRECT require the caller to have opened the handle to the interface (which is provided by storage device driver) for both Read and Write access.


но как сделать не пойму... 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)