Freigeben über


Sperrregelsatz (KMDF)

Verwenden Sie diese Regeln, um zu überprüfen, ob Ihr Treiber freigegebene Ressourcen ordnungsgemäß verwaltet.

In diesem Abschnitt

Thema BESCHREIBUNG

ParentObjectCheckLock

Die ParentObjectCheckLock-Regel gibt an, dass der Treiber WdfWaitLockCreate und WdfSpinLockCreate aufrufen soll, indem ein übergeordnetes Objekt festgelegt wird.

ReqSendWhileSpinlock

Die ReqSendWhileSpinlock-Regel gibt an, dass keine Anforderungen gesendet werden, während der Treiber ein Spinlock besitzt.

Spinlock

Die Spinlockregel gibt an, dass Aufrufe von KeAcquireSpinLock oder KeAcquireSpinLockRaiseToDpc und KeReleaseSpinlock im strikten Wechsel verwendet werden.

SpinlockDpc

Die SpinlockDpc-Regel gibt an, dass Aufrufe von KeAcquireSpinLock oder KeAcquireSpinLockRaiseToDpc und KeReleaseSpinlock im strikten Wechsel verwendet werden.

SpinlockRelease

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.

WdfInterruptLock

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.

WdfInterruptLockRelease

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.

WdfSpinlock

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.

WdfSpinlockRelease

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.

WdfWaitlock

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.

WdfWaitlockRelease

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

  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 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).