2010-06-24 71 views
0

我想從一個微過濾器文件系統驅動程序中提取一個USB存儲設備序列號,在InstanceSetup回調內使用here描述的技術唯一的區別是我做它在內核模式下。
我使用:USB存儲設備從微過濾器驅動程序的SerialNumber(從USB設備描述符)

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發送到這些接口?在用戶模式下一切正常,但在內核模式下它失敗了!

回答

0

我通過將計算委派給用戶模式服務並通過端口進行通話解決了討厭的問題。跛腳但非常有用。

0

您應該在設備名稱中將\ ?? \ \更改爲\ DosDevices \。它應該解決你的問題。

相關問題