Встала задача получить хэндл EFI system partition.
Т.е. нужно получить Device Path для данного partition, передать его в CreateFile и получить хэндл.
Загвоздка на этапе получения Device Path. Пробовал четыре способа, ни один не помог.
#1 — Win32 — FindFirstVolume/FindNextVolume — ESP не энумерирует.
#2 — SetupDiGetClassDevs, SetupDiEnumDeviceInterfaces, SetupDiGetDeviceInterfaceDetail
Сходно с #1. ESP игнорирует
#3 — CM_Get_Device_ID_List_Size, CM_Get_Device_ID_List, CM_Locate_DevNode, CM_Locate_DevNode
ESP в результатах есть, нo не удалось извлечь DevicePath, который CreateFile приняла бы (Invalid Parameter)
Здравствуйте, dwebster, Вы писали:
D>Привет, D>... D>#3 — CM_Get_Device_ID_List_Size, CM_Get_Device_ID_List, CM_Locate_DevNode, CM_Locate_DevNode D>ESP в результатах есть, нo не удалось извлечь DevicePath, который CreateFile приняла бы (Invalid Parameter) D>... D>Кто-нибудь знает правильный способ получить хэндл из user mode?
Здравствуйте, dwebster, Вы писали:
D>Здравствуйте, rumit7, Вы писали:
R>>так пробовали?
D>Да, это #3 и есть.
D>Выдает список в виде
D>\Device\HarddiskVolume2 D>\Device\HarddiskVolume3 D>.....
D>Но эти пути не пригодны для передачи в CreateFile (invalid parameter)
а если скормить NtOpenFile как на SO?
UPD. вот здесь тоже вроде рабочий пример, не могу к сожалению проверить
Здравствуйте, dwebster, Вы писали:
D>\Device\HarddiskVolume2 D>\Device\HarddiskVolume3 D>.....
D>Но эти пути не пригодны для передачи в CreateFile (invalid parameter)
Добавьте GLOBALROOT:
\\?\GLOBALROOT\Device\HarddiskVolume2
\\?\GLOBALROOT\Device\HarddiskVolume3