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 |
---|---|
Die MarkDevicePower-Regel gibt an, dass ein IRP_MJ_POWER mit IRP_MN_SET_POWER für SystemPowerState-IRP zu S0 geschrieben wird. |
|
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. |
|
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. |
|
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 . |
|
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 . |
|
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. |
|
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. |
|
Die MarkQueryRelations-Regel gibt an, dass der Treiber die IRP_MN_QUERY_DEVICE_RELATIONS IRP als Stift verwenden soll. |
|
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. |
|
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. |
|
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. |
|
Die PendedCompletedRequest3-Regel gibt an, dass ein ausstehendes IRP nicht mit einem Aufruf von IoCompleteRequest abgeschlossen werden soll. |
|
Die PendedCompletedRequestEx-Regel gibt an, dass der Treiber IoCompleteRequest für einen ausstehenden IRP nicht aufrufen soll. |
|
Die StartDeviceWait-Regel gibt an, dass der Treiber KeWaitForSingleObject nicht im Kontext der Startgeräte-IRP aufrufen soll. |
|
Die StartDeviceWait2-Regel gibt an, dass der Treiber KeWaitForSingleObject nicht im Kontext des Startgeräte-IRP aufrufen soll. |
|
Die StartDeviceWait3-Regel gibt an, dass der Treiber KeWaitForSingleObject nicht im Kontext der Startgeräte-IRP aufrufen soll. |
|
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
Wählen Sie Ihr Treiberprojekt (.vcxProj) in Microsoft Visual Studio aus. Klicken Sie im Menü Treiber auf Statische Treiberüberprüfung starten....
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).
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für