Set di regole di blocco (KMDF)

Usare queste regole per verificare che il driver gestisca correttamente le risorse condivise.

Contenuto della sezione

Argomento Descrizione

ParentObjectCheckLock

La regola ParentObjectCheckLock specifica che il driver deve chiamare WdfWaitLockCreate e WdfSpinLockCreate impostando un oggetto padre.

ReqSendWhileSpinlock

La regola ReqSendWhileSpinlock specifica che non vengono inviate richieste mentre il driver contiene uno spinlock.

Spinlock

La regola Spinlock specifica che le chiamate a KeAcquireSpinLock o KeAcquireSpinLockRaiseToDpc e KeReleaseSpinlock vengono usate nell'alternanza rigorosa.

SpinlockDpc

La regola SpinlockDpc specifica che le chiamate a KeAcquireSpinLock o KeAcquireSpinLockRaiseToDpc e KeReleaseSpinlock vengono usate nell'alternanza rigorosa.

SpinlockRelease

La regola SpinlockRelease specifica che le chiamate a KeAcquireSpinLock, KeAcquireSpinLockRaiseToDpc e KeReleaseSpinLock vengono usate in modo bilanciato all'interno di un callback kmDF. Alla fine di qualsiasi routine di callback kmDF, il driver non deve contenere il blocco di rotazione.

WdfInterruptLock

La regola WdfInterruptLock specifica che le chiamate al metodo WdfInterruptAcquireLock vengono usate in stretta alternanza con chiamate a WdfInterruptReleaseLock. Inoltre, alla fine di qualsiasi routine di callback kmDF, il driver non deve contenere l'oggetto di blocco dello spin framework, ottenuto da una chiamata precedente a WdfInterruptAcquireLock.

WdfInterruptLockRelease

La regola WdfInterruptLockRelease specifica che le chiamate a WdfInterruptAcquireLock e WdfInterruptReleaseLock vengono usate in modo bilanciato all'interno di una routine di callback kmDF. Alla fine di qualsiasi routine di callback kmDF, il driver non deve contenere l'oggetto di blocco dello spin framework ottenuto da una chiamata precedente a WdfInterruptAcquireLock.

WdfSpinlock

La regola WdfSpinlock specifica che le chiamate al metodo WdfSpinLockAcquire vengono usate nell'alternanza rigorosa con WdfSpinlockRelease. Alla fine di qualsiasi routine di callback kmDF, il driver non deve contenere l'oggetto spinlock del framework ottenuto da una chiamata precedente a WdfSpinLockAcquire.

WdfSpinlockRelease

La regola WdfSpinlockRelease specifica che le chiamate a WdfSpinLockAcquire e WdfSpinlockRelease vengono usate in modo bilanciato all'interno di una funzione di callback eventi KMDF. Quando la funzione di callback dell'evento KMDF restituisce, il driver non deve contenere l'oggetto di blocco dello spin framework ottenuto da una chiamata precedente a WdfSpinLockAcquire.

WdfWaitlock

La regola WdfWaitlock specifica che le chiamate a WdfWaitLockAcquire vengono usate nell'alternanza rigorosa con WdfWaitlockRelease. Quando la funzione di callback dell'evento KMDF restituisce, il driver non deve contenere l'oggetto di blocco dello spin framework ottenuto da una chiamata precedente a WdfWaitLockAcquire.

WdfWaitlockRelease

La regola WdfWaitlockRelease specifica che le chiamate a WdfWaitLockAcquire e WdfWaitLockRelease vengono usate in modo bilanciato all'interno di una funzione di callback dell'evento KMDF. Quando la funzione di callback dell'evento KMDF restituisce, il driver non deve contenere l'oggetto di blocco dello spin framework ottenuto da una chiamata precedente a WdfWaitLockAcquire.

Per selezionare il set di regole di blocco

  1. Selezionare il progetto driver (con estensione vcxProj) in Microsoft Visual Studio. Dal menu Driver fare clic su Avvia verifica driver statico....

  2. Fare clic sulla scheda Regole . In Set di regole selezionare Blocca.

    Per selezionare il set di regole predefinite da una finestra del prompt dei comandi per sviluppatori di Visual Studio, specificare Locking.sdv con l'opzione /check . Ad esempio:

    msbuild /t:sdv /p:Inputs="/check:Locking.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Per altre informazioni, vedere Uso del verificatore driver statico per trovare i difetti nei comandi driver e verifica driver statici (MSBuild).