Set di regole LocalIrpProcessing (WDM)
Usare queste regole per verificare che il driver gestisca correttamente i pacchetti di richiesta di I/O creati dal driver.
Contenuto della sezione
Argomento | Descrizione |
---|---|
La regola IoAllocateComplete specifica che un driver non deve chiamare IoCompleteRequest se l'IRP è stato creato con IoAllocateIrp. |
|
La regola IoAllocateFree specifica che un driver deve usare IoFreeIrp solo su IRP allocati in precedenza con IoAllocateIrp. |
|
La regola IoAllocateForward specifica che se un IRP viene generato da una chiamata a IoAllocateIrp, il driver deve impostare una routine di completamento prima di chiamare IoCallDriver o PoCallDriver. |
|
La regola IoAllocateIrpSignalEventInCompletion specifica che il driver deve chiamare KeSetEvent nella routine di completamento quando viene impostato il flag Irp-PendingReturned> e la routine di completamento elabora un IRP asincrono creato in locale. |
|
La regola IoAllocateIrpSignalEventInCompletion2 specifica che KeSetEvent deve essere chiamato nella routine di completamento quando viene impostato il flag Irp-PendingReturned> e la routine di completamento elabora un IRP asincrono creato in locale. |
|
La regola IoAllocateIrpSignalEventInCompletion3 specifica che KeSetEvent deve essere chiamato nella routine di completamento quando viene impostato il flag Irp-PendingReturned> e la routine di completamento elabora un IRP asincrono creato in locale. |
|
La regola IoAllocateIrpSignalEventInCompletionTimeout segnala un difetto se rileva che questo driver attenderà indefinitamente fino a quando non viene restituito il driver inferiore, perché è necessario segnalare l'evento di IRP nella routine di completamento. |
|
La regola IoBuildDeviceControlNoFree specifica che un driver che chiama IoBuildDeviceIoControlRequest non deve chiamare IoFreeIrp. |
|
La regola IoBuildDeviceControlWait specifica che la routine KeWaitForSingleObject deve essere chiamata se IoCallDriver o PoCallDriver restituisce STATUS_PENDING. |
|
La regola IoBuildDeviceControlWaitTimeout segnala un difetto se rileva che questo driver attenderà un tempo illimitato fino al ritorno del driver inferiore, perché è necessario segnalare l'evento di IRP nella routine di completamento. |
|
La regola IoBuildDeviceIoControlSetEvent specifica che un driver che chiama IoBuildDeviceIoControlRequest non deve chiamare KeSetEvent se il driver fornisce un puntatore a un oggetto evento allocato dal chiamante e inizializzato. KeSetEvent non deve essere chiamato dal driver per questo IRP. |
|
La regola IoBuildFsdComplete specifica che un driver non deve chiamare IoCompleteRequest se l'IRP è stato creato con IoBuildAsynchronousFsdRequest. |
|
La regola IoBuildFsdForward specifica che una routine di completamento deve essere impostata prima che un driver chiami IoCallDriver o PoCallDriver se l'IRP viene generato da una chiamata a IoBuildAsynchronousFsdRequest. |
|
La regola IoBuildFsdFree specifica che un driver deve usare IoFreeIrp solo su IRP allocati in precedenza con IoBuildAsynchronousFsdRequest. |
|
La regola IoBuildFsdIrpSignalEventInCompletion specifica che il driver deve chiamare KeSetEvent nella routine di completamento quando viene impostato il flag Irp-PendingReturned> e la routine di completamento elabora un IRP asincrono creato in locale. |
|
La regola IoBuildFsdIrpSignalEventInCompletion2 specifica che KeSetEvent deve essere chiamato nella routine di completamento quando viene impostato il flag Irp-PendingReturned> e la routine di completamento elabora un IRP asincrono creato in locale. |
|
La regola IoBuildFsdIrpSignalEventInCompletion3 specifica che KeSetEvent deve essere chiamato nella routine di completamento quando viene impostato il flag Irp-PendingReturned> e la routine di completamento elabora un IRP asincrono creato in locale. |
|
La regola IoBuildFsdIrpSignalEventInCompletionTimeout segnala un difetto quando il driver attende per un periodo illimitato fino al ritorno del driver inferiore, perché è necessario segnalare l'evento di IRP nella routine di completamento. |
|
La regola IoBuildSynchronousFsdRequestNoFree specifica che un driver che chiama IoBuildSynchronousFsdRequest non deve chiamare IoFreeIrp. |
|
La regola IoBuildSynchronousFsdRequestWait specifica che KeWaitForSingleObject deve essere chiamato nel caso in cui IoCallDriver o PoCallDriver restituisca STATUS_PENDING. |
|
La regola IoBuildSynchronousFsdRequestWaitTimeout segnala un difetto se rileva che questo driver attenderà a tempo indeterminato fino a quando non viene restituito il driver inferiore, perché l'evento di IRP deve essere segnalato nella routine di completamento. |
|
La regola RequestedPowerIrp specifica che il driver chiama PoRequestPowerIrp con la variabile puntatore |
Per selezionare il set di regole LocalIrpProcessing
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 LocalIrpProcessing.
Per selezionare il set di regole predefinito da una finestra del prompt dei comandi per gli sviluppatori di Visual Studio, specificare LocalIrpProcessing.sdv con l'opzione /check . Ad esempio:
msbuild /t:sdv /p:Inputs="/check:LocalIrpProcessing.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).