Frage

Ich mag aus dem Innern eines Minifilter Dateisystem-Treiber eine USB-Speichergerät Seriennummer extrahieren, in dem InstanceSetup Rückruf unter Verwendung der Technik hier der einzige Unterschied ist, dass ich es im Kernel-Modus tun.
Ich benutze:

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

aufzuzählen über mögliche Schnittstellen (zB Ergebnis):

\??\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}

und ich möchte zu finden, welche von ihnen ist die Schnittstelle meines Volumens mittels IOCTL_STORAGE_GET_DEVICE_NUMBER.

Ich habe versucht, ZwCreateFile & ZwDeviceIoControlFile aber ZwCreateFile eine STATUS_OBJECT_NAME_INVALID zurückgibt.

Wie kann ich IOCTLs an diesen Schnittstellen senden? Im User-Mode ist alles in Ordnung, aber im Kernel-Modus nicht it!

War es hilfreich?

Lösung 2

löste ich das nervtötende Problem, indem die Rechen einen Benutzer-Modus-Dienst zu delegieren und Gespräche über einen Port. Lame aber wirklich nützlich.

Andere Tipps

Sie sollten ändern \ ?? \ to \ DosDevices \ in den Gerätenamen. Es sollte Ihr Problem lösen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top