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 |
---|---|
A regra MarkDevicePower especifica que um IRP_MJ_POWER com IRP_MN_SET_POWER para SystemPowerState IRP indo para S0 está pendente. |
|
A regra MarkingInterlockedQueuedIrps especifica que o driver marca corretamente o IRP como pendente antes de enfileira-lo de forma interligada para processamento adicional. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
A regra MarkQueryRelations especifica que o driver deve aguardar a IRP_MN_QUERY_DEVICE_RELATIONS IRP. |
|
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. |
|
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. |
|
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. |
|
A regra PendedCompletedRequest3 especifica que um IRP pendente não deve ser concluído com uma chamada para IoCompleteRequest. |
|
A regra PendedCompletedRequestEx especifica que o driver não deve chamar IoCompleteRequest para um IRP pendente. |
|
A regra StartDeviceWait especifica que o driver não deve chamar KeWaitForSingleObject no contexto do IRP do dispositivo inicial. |
|
A regra StartDeviceWait2 especifica que o driver não deve chamar KeWaitForSingleObject no contexto do IRP do dispositivo inicial. |
|
A regra StartDeviceWait3 especifica que o driver não deve chamar KeWaitForSingleObject no contexto do IRP do dispositivo inicial. |
|
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
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 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).