Schulung
Modul
Troubleshoot device driver failures - Training
This module focuses on the role of device drivers and troubleshooting problems that pertain to them.
Dieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge aus, um die neuesten Funktionen, Sicherheitsupdates und technischen Support zu nutzen.
Nach eigenem Ermessen kann das Dateisystem ein IRP an den Dispatch-Einstiegspunkt des Gerätetreibers senden, um IRP_MJ_DEVICE_CONTROL Anforderungen mit Parameters.DeviceIoControl.IoControlCode an den Dispatch-Einstiegspunkt des Gerätetreibers zu senden, wobei Parameters.DeviceIoControl.IoControlCode im E/A-Stapelspeicherort wie folgt festgelegt ist:
IOCTL_XXX_CHECK_VERIFY
Dabei ist XXX der Gerätetyp, z. B. DISK, TAPE oder CDROM.
Der Typ DISK umfasst sowohl nicht partitionierbare (Floppy) als auch partitionierbare Wechselmediengeräte.
Wenn der zugrunde liegende Gerätetreiber feststellt, dass sich die Medien nicht geändert haben, sollte der Treiber die IRP abschließen und den IoStatus-Block mit den folgenden Werten zurückgeben:
Status |
Auf STATUS_SUCCESS festgelegt |
Information |
Auf 0 festlegen |
Wenn der Gerätetyp DISK oder CDROM ist und der Aufrufer einen Ausgabepuffer angegeben hat, gibt der Treiber die Medienänderungsanzahl im Puffer bei Irp-AssociatedIrp.SystemBuffer> zurück und legt Irp-IoStatus.Information> auf sizeof(ULONG) fest. Durch die Rückgabe dieser Anzahl gibt der Treiber dem Aufrufer die Möglichkeit, zu bestimmen, ob sich die Medien aus seiner Perspektive geändert haben.
Wenn der zugrunde liegende Gerätetreiber feststellt, dass sich die Medien geändert haben, führt er eine andere Aktion aus, je nachdem, ob das Volume eingebunden ist. Wenn das Volume eingebunden ist (das flag VPB_MOUNTED im VPB festgelegt ist), sollte der Treiber die folgenden Schritte ausführen:
Legen Sie die Flags im DeviceObject by ORing Flags mit DO_VERIFY_VOLUME fest.
Legen Sie den IoStatus-Block im IRP auf Folgendes fest:
Rufen Sie IoCompleteRequest mit dem Eingabe-IRP auf.
Wenn das Volume nicht eingebunden ist, darf der Treiber das DO_VERIFY_VOLUME Bit nicht festlegen. Der Treiber sollte IoStatus.Status auf STATUS_IO_DEVICE_ERROR festlegen, IoStatus.Information auf Null festlegen und IoCompleteRequest mit dem IRP aufrufen.
Schulung
Modul
Troubleshoot device driver failures - Training
This module focuses on the role of device drivers and troubleshooting problems that pertain to them.
Dokumentation
WdfUsbTargetDeviceRetrieveInformation-Funktion (wdfusb.h) - Windows drivers
Die WdfUsbTargetDeviceRetrieveInformation-Methode ruft Informationen über das USB-Gerät ab, das einem angegebenen Framework-USB-Geräteobjekt zugeordnet ist.
IoFreeWorkItem-Funktion (wdm.h) - Windows drivers
Die IoFreeWorkItem-Routine gibt eine Arbeitsaufgabe frei, die von IoAllocateWorkItem zugewiesen wurde.
FltAcquireResourceExclusive - Windows drivers
Erfahren Sie mehr über die FltAcquireResourceExclusive-Funktion.