Freigeben über


IrpTracking-Regelsatz (WDM)

Verwenden Sie diese Regeln, um zu überprüfen, ob der Treiber I/O-Anforderungspakete (IRP) ordnungsgemäß nachverfolgt, sodass das Gerät nicht entfernt wird, während IRPs ausstehen.

In diesem Abschnitt

Thema Beschreibung

IoReleaseRemoveLockAndWaitOutsideRemoveDevice

Die IoReleaseRemoveLockAndWaitOutsideRemoveDevice-Regel gibt an, dass IoReleaseRemoveLockAndWait nicht außerhalb IRP_MJ_PNP mit IRP_MN_REMOVE_DEVICE für einen PnP-Treiber aufgerufen werden soll.

NsRemoveLockMnRemove

Die NsRemoveLockMnRemove-Regel überprüft, ob ein Treiber bei der Verarbeitung von IRP_MJ_PNP mit MinorFunction-IRP_MN_REMOVE_DEVICE nicht STATUS_NOT_SUPPORTED zurückgibt. Diese Regel gilt nur für FDO- und FIDO-Treiber.

NsRemoveLockMnSurpriseRemove

Die NsRemoveLockMnSurpriseRemove-Regel überprüft, ob ein Treiber STATUS_NOT_SUPPORTED beim Verarbeiten einer IRP_MJ_PNP Anforderung mit minorFunction-IRP_MN_SUPRISE_REMOVAL nicht zurückgibt. Diese Regel gilt nur für FDO- und FIDO-Treiber.

NsRemoveLockQueryMnRemove

Die NsRemoveLockQueryMnRemove-Regel überprüft, ob ein Treiber bei der Verarbeitung von IRP_MJ_PNP mit MinorFunction-IRP_MN_QUERY_REMOVE nicht STATUS_NOT_SUPPORTED zurückgibt. Diese Regel gilt nur für FDO- und FIDO-Treiber.

RemoveLock

Die RemoveLock-Regel gibt an, dass Aufrufe an IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden. Darüber hinaus sollte der Treiber am Ende der IRP_MJ_PNP oder IRP_MJ_POWER Routine nicht das RemoveLock-Element enthalten.

RemoveLockCheck

Die RemoveLockCheck-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLockAndWait bei der Verarbeitung von IRP_MJ_PNP mit MinorFunction-IRP_MN_REMOVE_DEVICE ordnungsgemäß verwendet werden.

RemoveLockForward

Die RemoveLockForward-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn ein IRP an ein anderes Gerät weitergeleitet wird.

RemoveLockForward2

Die RemoveLockForward2-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn das IRP an ein anderes Gerät weitergeleitet wird.

RemoveLockForwardDeviceControl

Die RemoveLockForwardDeviceControl-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn der Treiber IoCallDriver verwendet, um ein IRP an ein anderes Gerät weiterzuleiten.

RemoveLockForwardDeviceControl2

Die RemoveLockForwardDeviceControl2-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn der Treiber IoCallDriver verwendet, um ein IRP an ein anderes Gerät weiterzuleiten.

RemoveLockForwardDeviceControlInternal

Die RemoveLockForwardDeviceControlInternal-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn ein IRP mithilfe von IoCallDriver an ein anderes Gerät weitergeleitet wird.

RemoveLockForwardDeviceControlInternal2

Die RemoveLockForwardDeviceControlInternal2-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn ein IRP mithilfe von IoCallDriver an ein anderes Gerät weitergeleitet wird.

RemoveLockForwardRead

Die RemoveLockForwardRead-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden.

RemoveLockForwardRead2

Die RemoveLockForwardRead2-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn ein IRP mithilfe von IoCallDriver an ein anderes Gerät weitergeleitet wird.

RemoveLockForwardWrite

Die RemoveLockForwardWrite-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn ein IRP mit IoCallDriver an ein anderes Gerät weitergeleitet wird.

RemoveLockForwardWrite2

Die RemoveLockForwardWrite2-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn ein IRP mit IoCallDriver an ein anderes Gerät weitergeleitet wird.

RemoveLockMnRemove

Die RemoveLockMnRemove-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLockAndWait bei der Verarbeitung von IRP_MJ_PNP mit MinorFunction-IRP_MN_REMOVE_DEVICE ordnungsgemäß verwendet werden.

RemoveLockMnRemove2

Die RemoveLockMnRemove2-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLockAndWait bei der Verarbeitung IRP_MN_REMOVE_DEVICE Anforderung ordnungsgemäß verwendet werden, bevor das IRP an niedrigere Treiber weitergeleitet wird.

RemoveLockMnSurpriseRemove

Die RemoveLockMnSurpriseRemove-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLockAndWait bei der Verarbeitung von IRP_MJ_PNP mit MinorFunction-IRP_MN_SUPRISE_REMOVAL ordnungsgemäß verwendet werden. Der Treiber sollte die Remove-Sperre abrufen, bevor das IRP nach unten im Stapel weitergeleitet wird.

RemoveLockQueryMnRemove

Die RemoveLockQueryMnRemove-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock bei der Verarbeitung von IRP_MJ_PNP mit MinorFunction-IRP_MN_QUERY_REMOVE_DEVICE ordnungsgemäß verwendet werden. Der Treiber sollte die Remove-Sperre abrufen, bevor das IRP nach unten im Stapel weitergeleitet wird.

RemoveLockRelease2

Die Regel RemoveLockRelease2 überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in strikter Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleaseCleanup

Die RemoveLockReleaseCleanup-Regel gibt an, dass Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in strenger Änderung verwendet werden. Jeder Aufruf von IoAcquireRemoveLock muss über einen übereinstimmenden Aufruf von IoReleaseRemoveLock verfügen. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleaseClose

Die Regel RemoveLockReleaseClose überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in strikter Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleaseCreate

Die RemoveLockReleaseCreate-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in strikter Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleaseDeviceControl

Die RemoveLockReleaseDeviceControl-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in einer strikten Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleaseInternalDeviceControl

Die RemoveLockReleaseInternalDeviceControl-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in strikter Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleasePnp

Die RemoveLockReleasePnp-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in strenger Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleasePower

Die RemoveLockReleasePower-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in einer strengen Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleaseRead

Die RemoveLockReleaseRead-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in strikter Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleaseShutdown

Die RemoveLockReleaseShutdown-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in strikter Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleaseSystemControl

Die RemoveLockReleaseSystemControl-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in strikter Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

RemoveLockReleaseWrite

Die RemoveLockReleaseWrite-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock in strenger Änderung verwendet werden. Darüber hinaus sollte der Fahrer am Ende der Versandroutine die Entsperrung nicht halten.

So wählen Sie den Regelsatz "IrpTracking" 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ätze IrpTracking aus.

    Um den Standardregelsatz aus einem Visual Studio-Entwickler-Eingabeaufforderungsfenster auszuwählen, geben Sie "IrpTracking.sdv " mit der Option "/check " an. Zum Beispiel:

    msbuild /t:sdv /p:Inputs="/check:IrpTracking.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).For more information, see Using Static Driver Verifier commands (MSBuild) to Find Defects in Drivers and Static Driver Verifier commands.