Conjunto de regras LocalIrpProcessing (WDM)
Use essas regras para verificar se o driver manipula corretamente os IRP (pacotes de solicitação de E/S) criados pelo driver.
Nesta seção
Tópico | Descrição |
---|---|
A regra IoAllocateComplete especifica que um driver não deve chamar IoCompleteRequest se o IRP foi criado com IoAllocateIrp. |
|
A regra IoAllocateFree especifica que um driver deve usar IoFreeIrp somente em IRPs alocados anteriormente com IoAllocateIrp. |
|
A regra IoAllocateForward especifica que, se um IRP for gerado por uma chamada para IoAllocateIrp, o driver deverá definir uma rotina de conclusão antes de chamar IoCallDriver ou PoCallDriver. |
|
A regra IoAllocateIrpSignalEventInCompletion especifica que o driver deve chamar KeSetEvent na rotina de conclusão quando o sinalizador Irp-PendingReturned> for definido e a rotina de conclusão estiver processando um IRP assíncrono criado localmente. |
|
A regra IoAllocateIrpSignalEventInCompletion2 especifica que KeSetEvent precisa ser chamado na rotina de conclusão quando o sinalizador Irp-PendingReturned> é definido e a rotina de conclusão está processando um IRP assíncrono criado localmente. |
|
A regra IoAllocateIrpSignalEventInCompletion3 especifica que KeSetEvent precisa ser chamado na rotina de conclusão quando o sinalizador Irp-PendingReturned> é definido e a rotina de conclusão está processando um IRP assíncrono criado localmente. |
|
A regra IoAllocateIrpSignalEventInCompletionTimeout relatará um defeito se detectar que esse driver aguardará indefinidamente até que o driver inferior retorne, pois o evento do IRP precisa ser sinalizado na rotina de conclusão. |
|
A regra IoBuildDeviceControlNoFree especifica que um driver que chama IoBuildDeviceIoControlRequest não deve chamar IoFreeIrp. |
|
A regra IoBuildDeviceControlWait especifica que a rotina KeWaitForSingleObject deve ser chamada se IoCallDriver ou PoCallDriver retornar STATUS_PENDING. |
|
A regra IoBuildDeviceControlWaitTimeout relatará um defeito se detectar que esse driver aguardará indefinidamente até que o driver inferior retorne, pois o evento do IRP é necessário para ser sinalizado na rotina de conclusão. |
|
A regra IoBuildDeviceIoControlSetEvent especifica que um driver que chama IoBuildDeviceIoControlRequest não deve chamar KeSetEvent se o driver fornecer um ponteiro para um objeto de evento alocado pelo chamador e inicializado. O KeSetEvent não precisa ser chamado pelo driver para esse IRP. |
|
A regra IoBuildFsdComplete especifica que um driver não deve chamar IoCompleteRequest se o IRP foi criado com IoBuildAsynchronousFsdRequest. |
|
A regra IoBuildFsdForward especifica que uma rotina de conclusão deve ser definida antes que um driver chame IoCallDriver ou PoCallDriver se o IRP for gerado por uma chamada para IoBuildAsynchronousFsdRequest. |
|
A regra IoBuildFsdFree especifica que um driver deve usar IoFreeIrp somente em IRPs alocados anteriormente com IoBuildAsynchronousFsdRequest. |
|
A regra IoBuildFsdIrpSignalEventInCompletion especifica que o driver deve chamar KeSetEvent na rotina de conclusão quando o sinalizador Irp-PendingReturned> estiver definido e a rotina de conclusão estiver processando um IRP assíncrono criado localmente. |
|
A regra IoBuildFsdIrpSignalEventInCompletion2 especifica que KeSetEvent precisa ser chamado na rotina de conclusão quando o sinalizador Irp-PendingReturned> é definido e a rotina de conclusão está processando um IRP assíncrono criado localmente. |
|
A regra IoBuildFsdIrpSignalEventInCompletion3 especifica que KeSetEvent precisa ser chamado na rotina de conclusão quando o sinalizador Irp-PendingReturned> é definido e a rotina de conclusão está processando um IRP assíncrono criado localmente. |
|
A regra IoBuildFsdIrpSignalEventInCompletionTimeout relata um defeito quando o driver aguarda indefinidamente até que o driver inferior retorne, pois o evento do IRP é necessário para ser sinalizado na rotina de conclusão. |
|
A regra IoBuildSynchronousFsdRequestNoFree especifica que um driver que chama IoBuildSynchronousFsdRequest não deve chamar IoFreeIrp. |
|
A regra IoBuildSynchronousFsdRequestWait especifica que KeWaitForSingleObject deve ser chamado caso IoCallDriver ou PoCallDriver retorne STATUS_PENDING. |
|
A regra IoBuildSynchronousFsdRequestWaitTimeout relatará um defeito se detectar que esse driver aguardará indefinidamente até que o driver inferior retorne, pois o evento do IRP precisa ser sinalizado na rotina de conclusão. |
|
A regra RequestedPowerIrp especifica que o driver chama PoRequestPowerIrp com a variável de |
Para selecionar o conjunto de regras LocalIrpProcessing
Selecione seu projeto de driver (.vcxProj) no Microsoft Visual Studio. No menu Driver , clique em Iniciar Verificador de Driver Estático....
Clique na guia Regras . Em Conjuntos de Regras, selecione LocalIrpProcessing.
Para selecionar o conjunto de regras padrão em uma janela do prompt de comando do desenvolvedor do Visual Studio, especifique LocalIrpProcessing.sdv com a opção /marcar. Por exemplo:
msbuild /t:sdv /p:Inputs="/check:LocalIrpProcessing.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
Para obter mais informações, consulte Using Static Driver Verifier to Find Defects in Drivers and Static Driver Verifier commands (MSBuild).