Partilhar via


Conjunto de regras irpPending (WDM)

Use essas regras para verificar se o driver está corretamente pendente pacotes de solicitação de E/S (IRP).

Nesta seção

Tópico Descrição

MarkDevicePower

A regra MarkDevicePower especifica que um IRP_MJ_POWER com IRP_MN_SET_POWER para SystemPowerState IRP indo para S0 está pendente.

MarkingInterlockedQueuedIrps

A regra MarkingInterlockedQueuedIrps especifica que o driver marca corretamente o IRP como pendente antes de enfileira-lo de forma interligada para processamento adicional.

MarkingQueuedIrps

A regra MarkingQueuedIrps especifica que o driver chama IoMarkIrpPending para um IRP que requer processamento adicional apenas enquanto mantém um bloqueio de rotação. Essa regra se aplica somente quando o driver adiciona o IRP a uma fila gerenciada pelo driver.

MarkIrpPending

A regra MarkIrpPending especifica que sempre que uma rotina de expedição de driver chama IoMarkIrpPending, o driver retorna STATUS_PENDING quando a rotina de expedição termina. Consulte MarkIrpPending2 para obter uma especificação complementar.

MarkIrpPending2

A regra MarkIrpPending2 especifica que, se uma rotina de expedição retornar STATUS_PENDING, ela chamou IoMarkIrpPending ou passou o IRP para o driver inferior. Consulte MarkIrpPending para obter uma especificação complementar.

MarkPower

A regra MarkPower especifica que um IRP_MJ_POWER com IRP_MN_SET_POWER para SystemPowerState IRP indo para S0 está pendente. Essa regra só se aplica aos drivers FDO e FIDO.

MarkPowerDown

A regra MarkPowerDown especifica que um IRP_MJ_POWER com IRP_MN_SET_POWER para SystemPowerState IRP indo de s0 para [S1... S5] está pendente.

MarkQueryRelations

A regra MarkQueryRelations especifica que o driver deve aguardar a IRP_MN_QUERY_DEVICE_RELATIONS IRP.

MarkStartDevice

A regra MarkStartDevice especifica que o driver aguarda uma IRP_MN_START_DEVICE IRP corretamente. Essa regra só se aplica aos drivers FDO e FIDO.

PendedCompletedRequest

A regra PendedCompletedRequest especifica que a rotina de expedição de um driver não retorna STATUS_PENDING em um IRP se o driver tiver chamado IoCompleteRequest no IRP de entrada.

PendedCompletedRequest2

A regra PendedCompletedRequest2 especifica que uma espera é necessária após uma chamada para IoCallDriver ou PoCallDriver porque a rotina de expedição pode concluir um IRP pendente.

PendedCompletedRequest3

A regra PendedCompletedRequest3 especifica que um IRP pendente não deve ser concluído com uma chamada para IoCompleteRequest.

PendedCompletedRequestEx

A regra PendedCompletedRequestEx especifica que o driver não deve chamar IoCompleteRequest para um IRP pendente.

StartDeviceWait

A regra StartDeviceWait especifica que o driver não deve chamar KeWaitForSingleObject no contexto do IRP do dispositivo inicial.

StartDeviceWait2

A regra StartDeviceWait2 especifica que o driver não deve chamar KeWaitForSingleObject no contexto do IRP do dispositivo inicial.

StartDeviceWait3

A regra StartDeviceWait3 especifica que o driver não deve chamar KeWaitForSingleObject no contexto do IRP do dispositivo inicial.

StartDeviceWait4

A regra StartDeviceWait4 especifica que o driver não deve chamar KeWaitForSingleObject no contexto do IRP do dispositivo inicial.

Para selecionar o conjunto de regras IrpPending

  1. Selecione seu projeto de driver (.vcxProj) no Microsoft Visual Studio. No menu Driver , clique em Iniciar Verificador de Driver Estático....

  2. Clique na guia Regras . Em Conjuntos de Regras, selecione IrpPending.

    Para selecionar o conjunto de regras padrão em uma janela do prompt de comando do desenvolvedor do Visual Studio, especifique IrpPending.sdv com a opção /marcar. Por exemplo:

    msbuild /t:sdv /p:Inputs="/check:IrpPending.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Para obter mais informações, consulte Usando o Verificador de Driver Estático para localizar defeitos em drivers e comandos do Verificador de Driver Estático (MSBuild).