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 |
---|---|
La regla MarkDevicePower especifica que un IRP_MJ_POWER con IRP_MN_SET_POWER para SystemPowerState IRP que va a S0 está lápiz. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
La regla MarkQueryRelations especifica que el controlador debe pendir la IRP_MN_QUERY_DEVICE_RELATIONS IRP. |
|
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. |
|
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. |
|
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. |
|
La regla PendedCompletedRequest3 especifica que no se debe completar un IRP pendiente con una llamada a IoCompleteRequest. |
|
La regla PendedCompletedRequestEx especifica que el controlador no debe llamar a IoCompleteRequest para un IRP pendiente. |
|
La regla StartDeviceWait especifica que el controlador no debe llamar a KeWaitForSingleObject en el contexto de iniciar IRP del dispositivo. |
|
La regla StartDeviceWait2 especifica que el controlador no debe llamar a KeWaitForSingleObject en el contexto de iniciar IRP del dispositivo. |
|
La regla StartDeviceWait3 especifica que el controlador no debe llamar a KeWaitForSingleObject en el contexto de iniciar IRP del dispositivo. |
|
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
Seleccione el proyecto de controlador (.vcxProj) en Microsoft Visual Studio. En el menú Controlador , haga clic en Iniciar comprobador de controladores estáticos....
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).