Sperrregelsatz (KMDF)
Verwenden Sie diese Regeln, um zu überprüfen, ob Ihr Treiber freigegebene Ressourcen ordnungsgemäß verwaltet.
In diesem Abschnitt
Thema | BESCHREIBUNG |
---|---|
Die ParentObjectCheckLock-Regel gibt an, dass der Treiber WdfWaitLockCreate und WdfSpinLockCreate aufrufen soll, indem ein übergeordnetes Objekt festgelegt wird. |
|
Die ReqSendWhileSpinlock-Regel gibt an, dass keine Anforderungen gesendet werden, während der Treiber ein Spinlock besitzt. |
|
Die Spinlockregel gibt an, dass Aufrufe von KeAcquireSpinLock oder KeAcquireSpinLockRaiseToDpc und KeReleaseSpinlock im strikten Wechsel verwendet werden. |
|
Die SpinlockDpc-Regel gibt an, dass Aufrufe von KeAcquireSpinLock oder KeAcquireSpinLockRaiseToDpc und KeReleaseSpinlock im strikten Wechsel verwendet werden. |
|
Die SpinlockRelease-Regel gibt an, dass Aufrufe von KeAcquireSpinLock, KeAcquireSpinLockRaiseToDpc und KeReleaseSpinLock in ausgewogener Weise innerhalb eines KMDF-Rückrufs verwendet werden. Am Ende einer KMDF-Rückrufroutine sollte der Treiber die Drehsperre nicht halten. |
|
Die WdfInterruptLock-Regel gibt an, dass Aufrufe der WdfInterruptAcquireLock-Methode im strikten Wechsel mit Aufrufen von WdfInterruptReleaseLock verwendet werden. Darüber hinaus sollte der Treiber am Ende einer KMDF-Rückrufroutine nicht das Framework-Spin lock-Objekt halten, das durch einen vorherigen Aufruf von WdfInterruptAcquireLock abgerufen wurde. |
|
Die WdfInterruptLockRelease-Regel gibt an, dass Aufrufe von WdfInterruptAcquireLock und WdfInterruptReleaseLock in einer KMDF-Rückrufroutine ausgeglichen verwendet werden. Am Ende einer KMDF-Rückrufroutine sollte der Treiber nicht das Framework-Spin lock-Objekt enthalten, das durch einen vorherigen Aufruf von WdfInterruptAcquireLock abgerufen wurde. |
|
Die WdfSpinlock-Regel gibt an, dass Aufrufe der WdfSpinLockAcquire-Methode im strikten Wechsel mit WdfSpinlockRelease verwendet werden. Am Ende einer KMDF-Rückrufroutine sollte der Treiber nicht das Framework-Spinlockobjekt enthalten, das durch einen vorherigen Aufruf von WdfSpinLockAcquire abgerufen wurde. |
|
Die WdfSpinlockRelease-Regel gibt an, dass Aufrufe von WdfSpinLockAcquire und WdfSpinlockRelease in ausgewogener Weise innerhalb einer KMDF-Ereignisrückruffunktion verwendet werden. Wenn die KMDF-Ereignisrückruffunktion zurückgibt, sollte der Treiber das Framework-Spin lock-Objekt nicht enthalten, das durch einen vorherigen Aufruf von WdfSpinLockAcquire abgerufen wurde. |
|
Die WdfWaitlock-Regel gibt an, dass Aufrufe von WdfWaitLockAcquire im strikten Wechsel mit WdfWaitlockRelease verwendet werden. Wenn die KMDF-Ereignisrückruffunktion zurückgibt, sollte der Treiber nicht das Framework-Spin lock-Objekt enthalten, das durch einen vorherigen Aufruf von WdfWaitLockAcquire abgerufen wurde. |
|
Die WdfWaitlockRelease-Regel gibt an, dass Aufrufe von WdfWaitLockAcquire und WdfWaitLockRelease in ausgewogener Weise innerhalb einer KMDF-Ereignisrückruffunktion verwendet werden. Wenn die KMDF-Ereignisrückruffunktion zurückgibt, sollte der Treiber nicht das Framework-Spin lock-Objekt enthalten, das durch einen vorherigen Aufruf von WdfWaitLockAcquire abgerufen wurde. |
So wählen Sie den Sperrregelsatz 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 die Option Sperren aus.
Um den Standardregelsatz aus einem Visual Studio-Entwicklereingabeaufforderungsfenster auszuwählen, geben Sie Locking.sdv mit der Option /check an. Beispiel:
msbuild /t:sdv /p:Inputs="/check:Locking.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).