Доброго времени суток, не подскажите как имея handle открытого файла возвращаемого CreateFile узнать имя этого файла?
попробовал через ZwQueryInformationFile, обычного файла возвращяет имя, а вот если это устройство, например '\\.\PhysicalDrive0' возвращяет STATUS_INVALID_DEVICE_REQUEST. Мне надо именно для устройства. Честно говоря как импользовать ZwQueryObject для получения имени не понял.
2FED извиняюсь, недосмотрел. я имел ввиду ZwQueryInformationFile, промахнулся строкой при копировании имени.
да можно хоть так для диска без натива: Код (Text): VOLUME_DISK_EXTENTS VDE; DeviceIoControl(hDevice,IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS,NULL,0,&VDE, sizeof(VDE),&TmpVar,(LPOVERLAPPED) NULL); Получим ссылку вида: \\\\.\\PhysicalDrive0
какое значение у IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS? у меня нету набора С++ а в заголовках масма такой константы нет.
l_inc да всё с ним в порядке, но первоначально я хотел именно ZwQueryInformationFile сказать. можно и с ZwQueryObject: http://forum.shelek.ru/index.php/topic,827.0.html
2FED Странные у Вас вопросы. Одного запроса в гугл вида: "#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS" достаточно, чтобы получить тонну результатов с ответом.
кстати забыл добавить,по IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS мы получим DiskNumber, после чего нужно сделать примерно: sprintf(sz_drive_link,"\\\\.\\%d",VDE.Extents->DiskNumber);
ну выполняю Код (Text): invoke DeviceIoControl,hFile,5636096,0,0,addr buf,MAX_PATH,addr n,0 воавращает 0 и код ошибки ERROR_INVALID_FUNCTION (00000001)
Код (Text): .data aPDrive db '\\.\PhysicalDrive0',0 .code ..... LOCAL n:dword LOCAL hFile:dword invoke CreateFile,addr aPDrive,0C0000000h,3,0,3,0,0 test eax,eax js exit mov hFile,eax invoke RtlFillMemory,addr buf,MAX_PATH,0 invoke DeviceIoControl,hFile,5636096,0,0,addr buf,MAX_PATH,addr n,0
1. addr buf - должен быть указатель на VOLUME_DISK_EXTENTS, откуда мы и будем извлекать DiskNumber; 2. MAX_PATH - должен быть размер структуры VOLUME_DISK_EXTENTS; 3. addr n - может быть NULL, т.к. не интересует нас и ф-цию в данном случае.