Compartir a través de


Conjunto de reglas IrpPending (WDM)

Use estas reglas para comprobar que el controlador aplica correctamente los paquetes de solicitud de E/S (IRP).

En esta sección

Tema Descripción

MarkDevicePower

La regla MarkDevicePower especifica que un IRP_MJ_POWER con IRP_MN_SET_POWER para SystemPowerState IRP que va a S0 está lápiz.

MarkingInterlockedQueuedIrps

La regla MarkingInterlockedQueuedIrps especifica que el controlador marca correctamente el IRP como pendiente antes de ponerla en cola de forma interbloqueada para su posterior procesamiento.

MarkingQueuedIrps

La regla MarkingQueuedIrps especifica que el controlador llama a IoMarkIrpPending para un IRP que solo requiere un procesamiento adicional mientras mantiene un bloqueo de número. Esta regla solo se aplica cuando el controlador agrega el IRP a una cola administrada por controladores.

MarkIrpPending

La regla MarkIrpPending especifica que cada vez que una rutina de distribución de controladores llama a IoMarkIrpPending, el controlador devuelve STATUS_PENDING cuando finaliza la rutina de distribución. Consulte MarkIrpPending2 para obtener una especificación gratuita.

MarkIrpPending2

La regla MarkIrpPending2 especifica que si una rutina de envío devuelve STATUS_PENDING, ha llamado IoMarkIrpPending o ha pasado el IRP al controlador inferior. Consulte MarkIrpPending para obtener una especificación gratuita.

MarkPower

La regla MarkPower especifica que un IRP_MJ_POWER con IRP_MN_SET_POWER para SystemPowerState IRP que va a S0 está en lápiz. Esta regla solo se aplica a los controladores FDO y FIDO.

MarkPowerDown

La regla MarkPowerDown especifica que una IRP_MJ_POWER con IRP_MN_SET_POWER para SystemPowerState IRP que va de s0 a [S1... S5] está en lápiz.

MarkQueryRelations

La regla MarkQueryRelations especifica que el controlador debe pendir la IRP_MN_QUERY_DEVICE_RELATIONS IRP.

MarkStartDevice

La regla MarkStartDevice especifica que el controlador lápiz un IRP_MN_START_DEVICE IRP correctamente. Esta regla solo se aplica a los controladores FDO y FIDO.

PendedCompletedRequest

La regla PendedCompletedRequest especifica que la rutina de envío de un controlador no devuelve STATUS_PENDING en un IRP si el controlador ha llamado a IoCompleteRequest en el IRP entrante.

PendedCompletedRequest2

La regla PendedCompletedRequest2 especifica que se requiere una espera después de una llamada a IoCallDriver o PoCallDriver porque la rutina de distribución podría completar un IRP pendiente.

PendedCompletedRequest3

La regla PendedCompletedRequest3 especifica que no se debe completar un IRP pendiente con una llamada a IoCompleteRequest.

PendedCompletedRequestEx

La regla PendedCompletedRequestEx especifica que el controlador no debe llamar a IoCompleteRequest para un IRP pendiente.

StartDeviceWait

La regla StartDeviceWait especifica que el controlador no debe llamar a KeWaitForSingleObject en el contexto de iniciar IRP del dispositivo.

StartDeviceWait2

La regla StartDeviceWait2 especifica que el controlador no debe llamar a KeWaitForSingleObject en el contexto de iniciar IRP del dispositivo.

StartDeviceWait3

La regla StartDeviceWait3 especifica que el controlador no debe llamar a KeWaitForSingleObject en el contexto de iniciar IRP del dispositivo.

StartDeviceWait4

La regla StartDeviceWait4 especifica que el controlador no debe llamar a KeWaitForSingleObject en el contexto de iniciar IRP del dispositivo.

Para seleccionar el conjunto de reglas IrpPending

  1. Seleccione el proyecto de controlador (.vcxProj) en Microsoft Visual Studio. En el menú Controlador , haga clic en Iniciar comprobador de controladores estáticos....

  2. Haga clic en la pestaña Reglas . En Conjuntos de reglas, seleccione IrpPending.

    Para seleccionar el conjunto de reglas predeterminado en una ventana del símbolo del sistema para desarrolladores de Visual Studio, especifique IrpPending.sdv con la opción /check . Por ejemplo:

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

    Para obtener más información, consulte Uso del comprobador de controladores estáticos para buscar defectos en controladores y comandos de comprobador de controladores estáticos (MSBuild).