Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usare queste regole per verificare che il driver gestisca correttamente le risorse condivise.
Contenuto della sezione
| Argomento | Descrizione |
|---|---|
La regola CancelSpinLock Rule (Storport) verifica che ogni chiamata a IoAcquireCancelSpinLock venga seguita tempestivamente da una chiamata a IoReleaseCancelSpinLock. |
|
La regola QueuedSpinLock verifica che i blocchi di spin in coda nello stack acquisiti tramite KeAcquireInStackQueuedSpinLock vengano rilasciati tempestivamente tramite KeReleaseInStackQueuedSpinLock. Inoltre, alla fine di una routine di invio o annullamento, il driver non deve contenere blocchi. |
|
Questa regola verifica che il driver non chiami KeReleaseInStackQueuedSpinLock senza prima acquisire il blocco tramite KeAcquireInStackQueuedSpinLock. |
|
Questa regola verifica che una chiamata a KeAcquireSpinLock venga seguita tempestivamente da una chiamata a KeReleaseSpinlock. Se un driver chiama di nuovo KeAcquireSpinLockRaiseToDpc o KeAcquireSpinLock prima di rilasciare il blocco, la regola non riesce. Inoltre, prima di uscire dalla routine dispatch o cancel, il driver deve rilasciare il blocco spin. |
|
Questa regola verifica che una chiamata a KeAcquireSpinLockRaiseToDpc venga immediatamente seguita da una chiamata a KeReleaseSpinlock. Se un driver chiama di nuovo KeAcquireSpinLock o KeAcquireSpinLockRaiseToDpc prima di rilasciare il blocco, la regola non riesce. Inoltre, prima di uscire dalla routine dispatch o cancel, il driver deve rilasciare il blocco spin. |
|
Questa regola verifica che il driver non tenti di rilasciare un blocco tramite KeReleaseSpinLock senza prima acquisirlo tramite KeAquireSpinlock o KeAcquireSpinLockRaiseToDpc. La regola passa quando viene rilasciato il blocco spin acquisito. |
|
Questa regola verifica che le routine IoStartNextPacket e IoCompleteRequest non vengano chiamate mentre si tiene premuto un blocco di rotazione. La regola tiene traccia del numero di blocchi di rotazione mantenuti in qualsiasi momento e, se tale numero non è 0 quando viene chiamata una delle due routine, il driver non riesce la regola. |
|
I driver Miniport sono necessari per acquisire il blocco di selezione MSI per un messaggio se e solo se, il membro InterruptSynchronizationMode della struttura PORT_CONFIGURATION_INFORMATION (Storport) è impostato su InterruptSynchronizePerMessage. Questa regola verifica che le chiamate a StorPortAcquireMSISpinLock vengano effettuate solo se la modalità di sincronizzazione è InterruptSynchronizePerMessage. |
|
Questa regola verifica che i blocchi acquisiti tramite StorPortAcquireSpinLock vengano rilasciati tempestivamente tramite StorPortReleaseSpinLock. Il driver miniport non riesce la regola se tenta di acquisire un blocco già acquisito o se tenta di rilasciare un blocco non acquisito. Inoltre, alla fine della routine di invio o annullamento, il driver non deve contenere blocchi di rotazione. |
|
La regola StorPortSpinLock3 verifica la gerarchia di acquisizione dei blocchi descritta nella documentazione per la routine StorPortAcquireSpinLock . |
|
Questa regola è la controparte della versione di StorPortSpinLock. È simile alla regola SpinLockRelease . |
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 Launch Static Driver Verifier....From the Driver menu, click Launch Static Driver Verifier....
Fare clic sulla scheda Regole . In Set di regole selezionare Blocca.
Per selezionare il set di regole predefinito da una finestra del prompt dei comandi per gli 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=Win32Per altre informazioni, vedere Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).