Je souhaite extraire un numéro de série de périphérique de stockage USB depuis un pilote de système de fichiers minifiltre, à l'intérieur du rappel InstanceSetup en utilisant la technique décrite here la seule différence est que je le fais en mode noyau.
J'utilise:Périphérique de stockage USB SerialNumber du pilote minifiltre (du descripteur de périphérique USB)
status = IoGetDeviceInterfaces(
&GUID_DEVINTERFACE_DISK,
NULL,
0,
&SymbolicLinkList
);
Enumérer sur les interfaces possibles (exemple de résultat):
\??\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}
et je veux trouver que l'un d'eux est l'interface de mon volume au moyen de IOCTL_STORAGE_GET_DEVICE_NUMBER.
J'ai essayé ZwCreateFile & ZwDeviceIoControlFile mais ZwCreateFile retourne un STATUS_OBJECT_NAME_INVALID.
Comment puis-je envoyer IOCTLS à ces interfaces? En mode utilisateur tout est OK mais en mode noyau, il échoue!