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

IoAllocateComplete

La regola IoAllocateComplete specifica che un driver non deve chiamare IoCompleteRequest se l'IRP è stato creato con IoAllocateIrp.

IoAllocateFree

La regola IoAllocateFree specifica che un driver deve usare IoFreeIrp solo su IRP allocati in precedenza con IoAllocateIrp.

IoAllocateForward

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.

IoAllocateIrpSignalEventInCompletion

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.

IoAllocateIrpSignalEventInCompletion2

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.

IoAllocateIrpSignalEventInCompletion3

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.

IoAllocateIrpSignalEventInCompletionTimeout

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.

IoBuildDeviceControlNoFree

La regola IoBuildDeviceControlNoFree specifica che un driver che chiama IoBuildDeviceIoControlRequest non deve chiamare IoFreeIrp.

IoBuildDeviceControlWait

La regola IoBuildDeviceControlWait specifica che la routine KeWaitForSingleObject deve essere chiamata se IoCallDriver o PoCallDriver restituisce STATUS_PENDING.

IoBuildDeviceControlWaitTimeout

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.

IoBuildDeviceIoControlSetEvent

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.

IoBuildFsdComplete

La regola IoBuildFsdComplete specifica che un driver non deve chiamare IoCompleteRequest se l'IRP è stato creato con IoBuildAsynchronousFsdRequest.

IoBuildFsdForward

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.

IoBuildFsdFree

La regola IoBuildFsdFree specifica che un driver deve usare IoFreeIrp solo su IRP allocati in precedenza con IoBuildAsynchronousFsdRequest.

IoBuildFsdIrpSignalEventInCompletion

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.

IoBuildFsdIrpSignalEventInCompletion2

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.

IoBuildFsdIrpSignalEventInCompletion3

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.

IoBuildFsdIrpSignalEventInCompletionTimeout

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.

IoBuildSynchronousFsdRequestNoFree

La regola IoBuildSynchronousFsdRequestNoFree specifica che un driver che chiama IoBuildSynchronousFsdRequest non deve chiamare IoFreeIrp.

IoBuildSynchronousFsdRequestWait

La regola IoBuildSynchronousFsdRequestWait specifica che KeWaitForSingleObject deve essere chiamato nel caso in cui IoCallDriver o PoCallDriver restituisca STATUS_PENDING.

IoBuildSynchronousFsdRequestWaitTimeout

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.

RequestedPowerIrp

La regola RequestedPowerIrp specifica che il driver chiama PoRequestPowerIrp con la variabile puntatore *Irp impostata su NULL.

Per selezionare il set di regole LocalIrpProcessing

  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 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).