Set di regole IrpPending (WDM)
Usare queste regole per verificare che il driver scriva correttamente i pacchetti di richiesta di I/O.
Contenuto della sezione
Argomento | Descrizione |
---|---|
La regola MarkDevicePower specifica che viene inserita una IRP_MJ_POWER con IRP_MN_SET_POWER per SystemPowerState IRP che passa a S0. |
|
La regola MarkInterlockedQueuedIrps specifica che il driver contrassegna correttamente l'IRP come in sospeso prima di accodarlo in modo interlocked per un'ulteriore elaborazione. |
|
La regola MarkingQueuedIrps specifica che il driver chiama IoMarkIrpPending per un IRP che richiede un'ulteriore elaborazione solo tenendo premuto un blocco di selezione. Questa regola si applica solo quando il driver aggiunge l'IRP a una coda gestita da driver. |
|
La regola MarkIrpPending specifica che ogni volta che una routine dispatch del driver chiama IoMarkIrpPending, il driver restituisce STATUS_PENDING al termine della routine dispatch. Per una specifica gratuita, vedere MarkIrpPending2 . |
|
La regola MarkIrpPending2 specifica che se una routine dispatch restituisce STATUS_PENDING, ha chiamato IoMarkIrpPending o passato l'IRP al driver inferiore. Per una specifica gratuita, vedere MarkIrpPending . |
|
La regola MarkPower specifica che viene inserita una IRP_MJ_POWER con IRP_MN_SET_POWER per SystemPowerState IRP che passa a S0. Questa regola si applica solo ai driver FDO e FIDO. |
|
La regola MarkPowerDown specifica che un IRP_MJ_POWER con IRP_MN_SET_POWER per SystemPowerState IRP passando da s0 a [S1... S5] è pended. |
|
La regola MarkQueryRelations specifica che il driver deve eseguire la penna del IRP_MN_QUERY_DEVICE_RELATIONS IRP. |
|
La regola MarkStartDevice specifica che il driver esegue correttamente l'input penna di un IRP_MN_START_DEVICE IRP. Questa regola si applica solo ai driver FDO e FIDO. |
|
La regola PendedCompletedRequest specifica che la routine di invio di un driver non restituisce STATUS_PENDING su un IRP se il driver ha chiamato IoCompleteRequest sul provider di servizi IRP in ingresso. |
|
La regola PendedCompletedRequest2 specifica che è necessaria un'attesa dopo una chiamata a IoCallDriver o PoCallDriver perché la routine dispatch potrebbe completare un IRP in sospeso. |
|
La regola PendedCompletedRequest3 specifica che un IRP in sospeso non deve essere completato con una chiamata a IoCompleteRequest. |
|
La regola PendedCompletedRequestEx specifica che il driver non deve chiamare IoCompleteRequest per un IRP in sospeso. |
|
La regola StartDeviceWait specifica che il driver non deve chiamare KeWaitForSingleObject nel contesto dell'IRP del dispositivo di avvio. |
|
La regola StartDeviceWait2 specifica che il driver non deve chiamare KeWaitForSingleObject nel contesto dell'IRP del dispositivo di avvio. |
|
La regola StartDeviceWait3 specifica che il driver non deve chiamare KeWaitForSingleObject nel contesto dell'IRP del dispositivo di avvio. |
|
La regola StartDeviceWait4 specifica che il driver non deve chiamare KeWaitForSingleObject nel contesto dell'IRP del dispositivo di avvio. |
Per selezionare il set di regole IrpPending
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 IrpPending (In sospeso).
Per selezionare il set di regole predefinito da una finestra del prompt dei comandi per gli sviluppatori di Visual Studio, specificare IrpPending.sdv con l'opzione /check . Ad esempio:
msbuild /t:sdv /p:Inputs="/check:IrpPending.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).