Condividi tramite


Set di regole di blocco (Storport)

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

Contenuto della sezione

Argomento Descrizione

CancelSpinLock

La regola CancelSpinLock Rule (Storport) verifica che ogni chiamata a IoAcquireCancelSpinLock venga seguita tempestivamente da una chiamata a IoReleaseCancelSpinLock.

QueuedSpinLock

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.

QueuedSpinLockRelease

Questa regola verifica che il driver non chiami KeReleaseInStackQueuedSpinLock senza prima acquisire il blocco tramite KeAcquireInStackQueuedSpinLock.

Spinlock

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.

SpinLockDpc

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.

SpinLockRelease

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.

SpinLockSafe

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.

StorPortMSILock

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.

StorPortSpinLock

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.

StorPortSpinLock3

La regola StorPortSpinLock3 verifica la gerarchia di acquisizione dei blocchi descritta nella documentazione per la routine StorPortAcquireSpinLock .

StorPortSpinLock4

Questa regola è la controparte della versione di StorPortSpinLock. È simile alla regola SpinLockRelease .

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 Launch Static Driver Verifier....From the Driver menu, click Launch Static Driver Verifier....

  2. 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=Win32
    

    Per altre informazioni, vedere Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).