Condividi tramite


Set di regole di blocco (WDM)

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

Contenuto della sezione

Argomento Descrizione

CancelSpinLock

La regola CancelSpinLock specifica che il driver chiama IoAcquireCancelSpinLock prima di chiamare IoReleaseCancelSpinLock e che il driver chiama IoReleaseCancelSpinLock prima di qualsiasi chiamata successiva a IoAcquireCancelSpinLock.

CancelSpinlockRelease

La regola CancelSpinlockRelease specifica che le chiamate a IoAcquireCancelSpinLock e IoReleaseCancelSpinLock vengono usate nell'alternanza rigorosa. Ovvero, ogni chiamata a IoAcquireCancelSpinLock deve avere una chiamata corrispondente a IoReleaseCancelSpinLock.

CriticalRegions

La regola CriticalRegions specifica che il driver deve chiamare KeEnterCriticalRegion prima di chiamare KeLeaveCriticalRegion e che il driver chiama KeLeaveCriticalRegion prima di qualsiasi chiamata successiva a KeEnterCriticalRegion. Le chiamate nidificate sono consentite.

ExclusiveResourceAccess

La regola ExclusiveResourceAccess specifica che il driver chiama ExAcquireResourceExclusiveLite prima di chiamare ExReleaseResourceLite o ExReleaseResourceForThreadLite e specifica che il driver chiama ExReleaseResourceLite o ExReleaseResourceForThreadLite prima di qualsiasi chiamata successiva a ExAcquireResourceExclusiveLite.

GuardedRegions

La regola GuardedRegions verifica che le chiamate a KeEnterGuardedRegion e KeLeaveGuardedRegion vengano usate in un'alternanza rigorosa.

QueuedSpinLock

La regola QueuedSpinLock specifica che il driver chiama KeAcquireInStackQueuedSpinLock prima di chiamare KeReleaseInStackQueuedSpinLock e che il driver chiama KeReleaseInStackQueuedSpinLock prima di qualsiasi chiamata successiva a KeAcquireInStackQueuedSpinLock.

QueuedSpinLockRelease

La regola QueuedSpinLockRelease specifica che le chiamate a KeAcquireInStackQueuedSpinLock e KeReleaseInStackQueuedSpinLock vengono usate nell'alternanza rigorosa.

Spinlock

La regola SpinLock specifica che, dopo aver chiamato KeAcquireSpinLock, il driver chiama KeReleaseSpinLock prima delle chiamate successive a KeAcquireSpinLock o a KeAcquireSpinLockRaiseToDpc.

SpinLockDpc

La regola SpinLockDpc specifica che le chiamate a KeAcquireSpinLock o KeAcquireSpinLockRaiseToDpc e KeReleaseSpinLock devono essere eseguite in stretta alternanza. Ovvero, dopo aver chiamato KeAcquireSpinLock o KeAcquireSpinLockRaiseToDpc, il driver deve chiamare KeReleaseSpinLock prima delle chiamate successive a KeAcquireSpinLock o a KeAcquireSpinLockRaiseToDpc.

SpinlockRelease

La regola SpinlockRelease specifica che le chiamate a KeReleaseSpinLock vengono eseguite in stretta alternanza con KeAcquireSpinLock e KeAcquireSpinLockRaiseToDpc. Ovvero, il driver deve chiamare KeReleaseSpinLock dopo aver chiamato KeAcquireSpinLock o KeAcquireSpinLockRaiseToDpc e prima delle chiamate successive a KeAcquireSpinLock o a KeAcquireSpinLockRaiseToDpc.

SpinLockSafe

La regola SpinLockSafe specifica che IoStartNextPacket e IoCompleteRequest non vengono chiamati durante la conservazione di un blocco di spin.

WithinCriticalRegion

La regola WithinCriticalRegion specifica che le chiamate del driver a determinate funzioni di sincronizzazione vengono visualizzate solo dopo aver chiamato KeEnterCriticalRegion e prima di chiamare KeLeaveCriticalRegion.

Le funzioni di sincronizzazione interessate sono le seguenti:

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