Set di regole di blocco (WDM)
Usare queste regole per verificare che il driver gestisca correttamente le risorse condivise.
Contenuto della sezione
Argomento | Descrizione |
---|---|
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. |
|
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. |
|
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. |
|
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. |
|
La regola GuardedRegions verifica che le chiamate a KeEnterGuardedRegion e KeLeaveGuardedRegion vengano usate in un'alternanza rigorosa. |
|
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. |
|
La regola QueuedSpinLockRelease specifica che le chiamate a KeAcquireInStackQueuedSpinLock e KeReleaseInStackQueuedSpinLock vengono usate nell'alternanza rigorosa. |
|
La regola SpinLock specifica che, dopo aver chiamato KeAcquireSpinLock, il driver chiama KeReleaseSpinLock prima delle chiamate successive a KeAcquireSpinLock o a KeAcquireSpinLockRaiseToDpc. |
|
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. |
|
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. |
|
La regola SpinLockSafe specifica che IoStartNextPacket e IoCompleteRequest non vengono chiamati durante la conservazione di un blocco di spin. |
|
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
Selezionare il progetto driver (con estensione vcxProj) in Microsoft Visual Studio. Dal menu Driver fare clic su Avvia verifica driver statico....
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).