USB-накопитель USB SerialNumber от Minifilter Driver (от дескриптора устройства USB)

StackOverflow https://stackoverflow.com/questions/3110046

Вопрос

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

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_STORGE_GET_DEVICE_NUMBER.

Я попробовал zwcreatefile & zwdeviceiocontroftrofile, но zwcreatefile возвращает status_object_name_invalid.

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

Это было полезно?

Решение 2

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top