Set di regole IrpTracking (WDM)
Usare queste regole per verificare che il driver tenga traccia correttamente dei pacchetti di richieste di I/O (IRP) in modo che il dispositivo non venga rimosso mentre i runtime di integrazione sono in sospeso.
In questa sezione
Argomento | Descrizione |
---|---|
La regola IoReleaseRemoveLockAndWaitOutsideRemoveDevice specifica che IoReleaseRemoveLockAndWait non deve essere chiamato all'esterno di IRP_MJ_PNP con IRP_MN_REMOVE_DEVICE per un driver PnP. |
|
La regola NsRemoveLockMnRemove verifica che un driver non restituisca STATUS_NOT_SUPPORTED durante l'elaborazione IRP_MJ_PNP con IRP_MN_REMOVE_DEVICE MinorFunction. Questa regola si applica solo ai driver FDO e FIDO. |
|
La regola NsRemoveLockMnSurpriseRemove verifica che un driver non restituisca STATUS_NOT_SUPPORTED durante l'elaborazione di una richiesta di IRP_MJ_PNP con minorFunction IRP_MN_SUPRI edizione Standard_REMOVAL. Questa regola si applica solo ai driver FDO e FIDO. |
|
La regola NsRemoveLockQueryMnRemove verifica che un driver non restituisca STATUS_NOT_SUPPORTED durante l'elaborazione IRP_MJ_PNP con IRP_MN_QUERY_REMOVE MinorFunction. Questa regola si applica solo ai driver FDO e FIDO. |
|
La regola RemoveLock specifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengono usate correttamente. Inoltre, alla fine della routine IRP_MJ_PNP o IRP_MJ_POWER, il driver non deve contenere RemoveLock. |
|
La regola RemoveLockCheck verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLockAndWait vengano usate correttamente durante l'elaborazione di IRP_MJ_PNP con MinorFunction IRP_MN_REMOVE_DEVICE. |
|
La regola RemoveLockForward verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente quando si inoltra un IRP a un altro dispositivo. |
|
La regola RemoveLockForward2 verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente durante l'inoltro di IRP a un altro dispositivo. |
|
La regola RemoveLockForwardDeviceControl verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente quando il driver usa IoCallDriver per inoltrare un IRP a un altro dispositivo. |
|
La regola RemoveLockForwardDeviceControl2 verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente quando il driver usa IoCallDriver per inoltrare un IRP a un altro dispositivo. |
|
La regola RemoveLockForwardDeviceControlInternal verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente quando si inoltra un IRP usando IoCallDriver a un altro dispositivo. |
|
La regola RemoveLockForwardDeviceControlInternal2 verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente quando si inoltra un IRP usando IoCallDriver a un altro dispositivo. |
|
La regola RemoveLockForwardRead verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente. |
|
La regola RemoveLockForwardRead2 verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente durante l'inoltro di un IRP tramite IoCallDriver a un altro dispositivo. |
|
La regola RemoveLockForwardWrite verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente durante l'inoltro di un IRP tramite IoCallDriver a un altro dispositivo. |
|
La regola RemoveLockForwardWrite2 verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente durante l'inoltro di un IRP tramite IoCallDriver a un altro dispositivo. |
|
La regola RemoveLockMnRemove verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLockAndWait vengano usate correttamente durante l'elaborazione di IRP_MJ_PNP con MinorFunction IRP_MN_REMOVE_DEVICE. |
|
La regola RemoveLockMnRemove2 verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLockAndWait vengano usate correttamente durante l'elaborazione IRP_MN_REMOVE_DEVICE richiesta prima dell'inoltro dell'IRP ai driver inferiori. |
|
La regola RemoveLockMnSurpriseRemove verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLockAndWait vengano usate correttamente durante l'elaborazione di IRP_MJ_PNP con IRP_MN_SUPRI edizione Standard_REMOVAL MinorFunction. Il driver deve acquisire il blocco di rimozione prima di inoltrare l'IRP nello stack. |
|
La regola RemoveLockQueryMnRemove verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate correttamente durante l'elaborazione di IRP_MJ_PNP con MinorFunction IRP_MN_QUERY_REMOVE_DEVICE. Il driver deve acquisire il blocco di rimozione prima di inoltrare l'IRP nello stack. |
|
La regola RemoveLockRelease2 verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in stretta alternanza. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleaseCleanup specifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengono usate in alternanza rigorosa. Ogni chiamata a IoAcquireRemoveLock deve avere una chiamata corrispondente a IoReleaseRemoveLock. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleaseClose verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in alternanza rigorosa. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleaseCreate verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in stretta alternanza. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleaseDeviceControl verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in stretta alternanza. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleaseInternalDeviceControl verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in alternanza rigorosa. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleasePnp verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in stretta alternanza. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleasePower verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in alternanza rigorosa. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleaseRead verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in alternanza rigorosa. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleaseShutdown verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in alternanza rigorosa. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleaseSystemControl verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in stretta alternanza. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
|
La regola RemoveLockReleaseWrite verifica che le chiamate a IoAcquireRemoveLock e IoReleaseRemoveLock vengano usate in stretta alternanza. Inoltre, alla fine della routine dispatch il driver non deve contenere il blocco di rimozione. |
Per selezionare il set di regole IrpTracking
Selezionare il progetto driver (con estensione vcxProj) in Microsoft Visual Studio. Dal menu Driver fare clic su Launch Static Driver Verifier...(Avvia verifica driver statico...).
Fare clic sulla scheda Regole . In Set di regole selezionare IrpTracking.
Per selezionare il set di regole predefinito da una finestra del prompt dei comandi per sviluppatori di Visual Studio, specificare IrpTracking.sdv con l'opzione /check . Ad esempio:
msbuild /t:sdv /p:Inputs="/check:IrpTracking.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).