IrpPending Rule Set (WDM)

Verwenden Sie diese Regeln, um zu überprüfen, ob Ihr Treiber E/A-Anforderungspakete (IRP) korrekt pendiert.

In diesem Abschnitt

Thema BESCHREIBUNG

MarkDevicePower

Die MarkDevicePower-Regel gibt an, dass ein IRP_MJ_POWER mit IRP_MN_SET_POWER für SystemPowerState-IRP zu S0 geschrieben wird.

MarkingInterlockedQueuedIrps

Die MarkingInterlockedQueuedIrps-Regel gibt an, dass der Treiber den IRP ordnungsgemäß als ausstehend markiert, bevor er es für die weitere Verarbeitung in eine verriegelte Weise in die Warteschlange stellt.

MarkingQueuedIrps

Die MarkingQueuedIrps-Regel gibt an, dass der Treiber IoMarkIrpPending für eine IRP aufruft, die nur während einer Drehsperre eine weitere Verarbeitung erfordert. Diese Regel gilt nur, wenn der Treiber die IRP einer vom Treiber verwalteten Warteschlange hinzufügt.

MarkIrpPending

Die MarkIrpPending-Regel gibt an, dass der Treiber immer dann STATUS_PENDING zurückgibt, wenn die Dispatchroutine endet, wenn eine Treiberverteilungsroutine IoMarkIrpPending aufruft. Eine kostenlose Spezifikation finden Sie unter MarkIrpPending2 .

MarkIrpPending2

Die MarkIrpPending2-Regel gibt an, dass, wenn eine Dispatchroutine STATUS_PENDING zurückgibt, IoMarkIrpPending aufgerufen oder die IRP an den niedrigeren Treiber übergeben hat. Eine kostenlose Spezifikation finden Sie unter MarkIrpPending .

MarkPower

Die MarkPower-Regel gibt an, dass ein IRP_MJ_POWER mit IRP_MN_SET_POWER für SystemPowerState IRP zu S0 geschrieben wird. Diese Regel gilt nur für FDO- und FIDO-Treiber.

MarkPowerDown

Die MarkPowerDown-Regel gibt an, dass ein IRP_MJ_POWER mit IRP_MN_SET_POWER für SystemPowerState IRP von s0 auf [S1... S5] ist geschrieben.

MarkQueryRelations

Die MarkQueryRelations-Regel gibt an, dass der Treiber die IRP_MN_QUERY_DEVICE_RELATIONS IRP als Stift verwenden soll.

MarkStartDevice

Die MarkStartDevice-Regel gibt an, dass der Treiber einen IRP_MN_START_DEVICE-IRP ordnungsgemäß angibt. Diese Regel gilt nur für FDO- und FIDO-Treiber.

PendedCompletedRequest

Die PendedCompletedRequest-Regel gibt an, dass die Dispatchroutine eines Treibers keine STATUS_PENDING für eine IRP zurückgibt, wenn der Treiber IoCompleteRequest für die eingehende IRP aufgerufen hat.

PendedCompletedRequest2

Die PendedCompletedRequest2-Regel gibt an, dass nach einem Aufruf von IoCallDriver oder PoCallDriver eine Wartezeit erforderlich ist, da die Dispatchroutine eine ausstehende IRP abschließen könnte.

PendedCompletedRequest3

Die PendedCompletedRequest3-Regel gibt an, dass ein ausstehendes IRP nicht mit einem Aufruf von IoCompleteRequest abgeschlossen werden soll.

PendedCompletedRequestEx

Die PendedCompletedRequestEx-Regel gibt an, dass der Treiber IoCompleteRequest für einen ausstehenden IRP nicht aufrufen soll.

StartDeviceWait

Die StartDeviceWait-Regel gibt an, dass der Treiber KeWaitForSingleObject nicht im Kontext der Startgeräte-IRP aufrufen soll.

StartDeviceWait2

Die StartDeviceWait2-Regel gibt an, dass der Treiber KeWaitForSingleObject nicht im Kontext des Startgeräte-IRP aufrufen soll.

StartDeviceWait3

Die StartDeviceWait3-Regel gibt an, dass der Treiber KeWaitForSingleObject nicht im Kontext der Startgeräte-IRP aufrufen soll.

StartDeviceWait4

Die StartDeviceWait4-Regel gibt an, dass der Treiber KeWaitForSingleObject nicht im Kontext des Startgeräte-IRP aufrufen soll.

So wählen Sie den IrpPending-Regelsatz aus

  1. Wählen Sie Ihr Treiberprojekt (.vcxProj) in Microsoft Visual Studio aus. Klicken Sie im Menü Treiber auf Statische Treiberüberprüfung starten....

  2. Klicken Sie auf die Registerkarte Regeln . Wählen Sie unter Regelsätzedie Option Ausstehend aus.

    Um den Standardregelsatz aus einem Visual Studio-Entwicklereingabeaufforderungsfenster auszuwählen, geben Sie IrpPending.sdv mit der Option /check an. Beispiel:

    msbuild /t:sdv /p:Inputs="/check:IrpPending.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Weitere Informationen finden Sie unter Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).