USB-накопитель SerialNumber из драйвера минифильтра (из дескриптора USB-устройства) - PullRequest
0 голосов
/ 24 июня 2010

Я хочу извлечь серийный номер запоминающего устройства USB из драйвера файловой системы минифильтра, внутри обратного вызова InstanceSetup, используя описанную технику здесь , единственное отличие состоит в том, что я делаю это в режиме ядра. * Я использую:

status = IoGetDeviceInterfaces( 
    &GUID_DEVINTERFACE_DISK, 
    NULL, 
    0, 
    &SymbolicLinkList
);

для перечисления возможных интерфейсов (пример результата):

\??\SCSI#Disk&Ven_VMware_&Prod_VMware_Virtual_S&Rev_1.0#4&5fcaafc&0&000#{53f56307 -b6bf-11d0-94f2-00a0c91efb8b}
\??\USBSTOR#Disk&Ven_Kingston&Prod_DataTraveler_C10&Rev_1.00#001D92AD7568F030E3CC 0AFC&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
\??\USBSTOR#Disk&Ven_USB_2.0&Prod_Flash_Disk&Rev_1100#AA04012700007777&0#{53f5630 7-b6bf-11d0-94f2-00a0c91efb8b}

и я хочу выяснить, какой из них является интерфейсом моего тома, с помощью IOCTL_STORAGE_GET_DEVICE_NUMBER.

Я пробовал ZwCreateFile & ZwDeviceIoControlFile, но ZwCreateFile возвращает STATUS_OBJECT_NAME_INVALID.

Как я могу отправить IOCTLS на эти интерфейсы? В режиме пользователя все в порядке, но в режиме ядра это не получается!

Ответы [ 2 ]

0 голосов
/ 15 июля 2010

Я решил досадную проблему, делегировав вычисления в службу пользовательского режима и поговорив через порт. Хромый, но очень полезный.

0 голосов
/ 13 июля 2010

Вы должны изменить \ ?? \ на \ DosDevices \ в именах устройств.Это должно решить вашу проблему.

...