我想使用所描述的技术从minifitter文件系统驱动程序内部提取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。

如何将IOCTL发送到这些接口?在用户模式下,一切都可以,但是在内核模式下它会失败!

有帮助吗?

解决方案 2

我通过将计算委派给用户模式服务并通过端口进行交谈来解决讨厌的问题。 la脚,但真的很有用。

其他提示

您应该在设备名称中将 ?? 更改为 dosdevices 。它应该解决您的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top