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 |
---|---|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Die RemoveLockForward-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn ein IRP an ein anderes Gerät weitergeleitet wird. |
|
Die RemoveLockForward2-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden, wenn das IRP an ein anderes Gerät weitergeleitet wird. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Die RemoveLockForwardRead-Regel überprüft, ob Aufrufe von IoAcquireRemoveLock und IoReleaseRemoveLock ordnungsgemäß verwendet werden. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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
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ä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.