DeviceIoControl() и IOCTL_DISK_GET_PARTITION_INFO
От: Bah  
Дата: 14.03.04 18:17
Оценка:
Подскажите пожалуйста, как правильно использовать данное сочетание мой код (ниже) не работает. Возвращаемое значение DeviceIOControl -ноль.
Если поставить доступ GENERIC — то возвращает не ноль, однако в структуре PARTITION_INFO ppi какая-то ерунда.
Вообще пишу программу, создающую образы разделов(курсовая такая). Если подскажете что-нибудь — буду благодарен.

hDevice = CreateFile(szPartName,
0, // GENERIC_WRITE | GENERIC_READ
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);


bPResult = DeviceIoControl(hDevice,
IOCTL_DISK_GET_PARTITION_INFO,
NULL, 0,
&ppi,
sizeof(ppi),
&junk,
(LPOVERLAPPED) NULL);

CloseHandle(hDevice);
Re: DeviceIoControl() и IOCTL_DISK_GET_PARTITION_INFO
От: Valerio Россия linkedin.com/in/boronin
Дата: 15.03.04 06:14
Оценка:
Здравствуйте, Bah, Вы писали:

Bah>Подскажите пожалуйста, как правильно использовать данное сочетание мой код (ниже) не работает. Возвращаемое значение DeviceIOControl -ноль.

это значит что ошибка посему можно даже не смотреть в структуру
Вы уверены что у Вас hDevice валидный перед вызовом DIOC?

в описании CreateFile написаны условия для открытия volume handles — права админа, OPEN_EXISTING и FILE_SHARE_WRITE флаги
из Вашего сообщения не ясно есть ли у Вас права админа и не ясно какой именно девайс Вы открываете: \\.\PHYSICALDRIVE0 или \\.\C:?

короче, посмотрите пример
Platform SDK: Device I/O
Calling DeviceIoControl
... << RSDN@Home 1.1.3 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.