Compartir a través de


Conjunto de reglas LocalIrpProcessing (WDM)

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

En esta sección

Tema Descripción

IoAllocateComplete

La regla IoAllocateComplete especifica que un controlador no debe llamar a IoCompleteRequest si el IRP se creó con IoAllocateIrp.

IoAllocateFree

La regla IoAllocateFree especifica que un controlador debe usar IoFreeIrp solo en irP asignados previamente con IoAllocateIrp.

IoAllocateForward

La regla IoAllocateForward especifica que si una llamada a IoAllocateIrp genera un IRP, el controlador debe establecer una rutina de finalización antes de llamar a IoCallDriver o PoCallDriver.

IoAllocateIrpSignalEventInCompletion

La regla IoAllocateIrpSignalEventInCompletion especifica que el controlador debe llamar a KeSetEvent en la rutina de finalización cuando se establece la marca Irp-PendingReturned> y la rutina de finalización procesa un IRP asincrónico creado localmente.

IoAllocateIrpSignalEventInCompletion2

La regla IoAllocateIrpSignalEventInCompletion2 especifica que se debe llamar a KeSetEvent en la rutina de finalización cuando se establece la marca Irp-PendingReturned> y la rutina de finalización procesa un IRP asincrónico creado localmente.

IoAllocateIrpSignalEventInCompletion3

La regla IoAllocateIrpSignalEventInCompletion3 especifica que se debe llamar a KeSetEvent en la rutina de finalización cuando se establece la marca Irp-PendingReturned> y la rutina de finalización procesa un IRP asincrónico creado localmente.

IoAllocateIrpSignalEventInCompletionTimeout

La regla IoAllocateIrpSignalEventInCompletionTimeout notifica un defecto si detecta que este controlador esperará indefinidamente hasta que se devuelva el controlador inferior, ya que es necesario indicar el evento de IRP en la rutina de finalización.

IoBuildDeviceControlNoFree

La regla IoBuildDeviceControlNoFree especifica que un controlador que llama a IoBuildDeviceIoControlRequest no debe llamar a IoFreeIrp.

IoBuildDeviceControlWait

La regla IoBuildDeviceControlWait especifica que se debe llamar a la rutina KeWaitForSingleObject si IoCallDriver o PoCallDriver devuelve STATUS_PENDING.

IoBuildDeviceControlWaitTimeout

La regla IoBuildDeviceControlWaitTimeout notifica un defecto si detecta que este controlador esperará indefinidamente hasta que se devuelva el controlador inferior, ya que es necesario indicar el evento del IRP en la rutina de finalización.

IoBuildDeviceIoControlSetEvent

La regla IoBuildDeviceIoControlSetEvent especifica que un controlador que llama a IoBuildDeviceIoControlRequest no debe llamar a KeSetEvent si el controlador proporciona un puntero a un objeto de evento asignado e inicializado por el autor de la llamada. El controlador no necesita llamar a KeSetEvent para este IRP.

IoBuildFsdComplete

La regla IoBuildFsdComplete especifica que un controlador no debe llamar a IoCompleteRequest si el IRP se creó con IoBuildAsynchronousFsdRequest.

IoBuildFsdForward

La regla IoBuildFsdForward especifica que se debe establecer una rutina de finalización antes de que un controlador llame a IoCallDriver o PoCallDriver si el IRP se genera mediante una llamada a IoBuildAsynchronousFsdRequest.

IoBuildFsdFree

La regla IoBuildFsdFree especifica que un controlador debe usar IoFreeIrp solo en irP asignados previamente con IoBuildAsynchronousFsdRequest.

IoBuildFsdIrpSignalEventInCompletion

La regla IoBuildFsdIrpSignalEventInCompletion especifica que el controlador debe llamar a KeSetEvent en la rutina de finalización cuando se establece la marca Irp-PendingReturned> y la rutina de finalización procesa un IRP asincrónico creado localmente.

IoBuildFsdIrpSignalEventInCompletion2

La regla IoBuildFsdIrpSignalEventInCompletion2 especifica que se debe llamar a KeSetEvent en la rutina de finalización cuando se establece la marca Irp-PendingReturned> y la rutina de finalización procesa un IRP asincrónico creado localmente.

IoBuildFsdIrpSignalEventInCompletion3

La regla IoBuildFsdIrpSignalEventInCompletion3 especifica que se debe llamar a KeSetEvent en la rutina de finalización cuando se establece la marca Irp-PendingReturned> y la rutina de finalización procesa un IRP asincrónico creado localmente.

IoBuildFsdIrpSignalEventInCompletionTimeout

La regla IoBuildFsdIrpSignalEventInCompletionTimeout notifica un defecto cuando el controlador espera indefinidamente hasta que se devuelve el controlador inferior, ya que es necesario indicar el evento del IRP en la rutina de finalización.

IoBuildSynchronousFsdRequestNoFree

La regla IoBuildSynchronousFsdRequestNoFree especifica que un controlador que llama a IoBuildSynchronousFsdRequest no debe llamar a IoFreeIrp.

IoBuildSynchronousFsdRequestWait

La regla IoBuildSynchronousFsdRequestWait especifica que se debe llamar a KeWaitForSingleObject en caso de que IoCallDriver o PoCallDriver devuelva STATUS_PENDING.

IoBuildSynchronousFsdRequestWaitTimeout

La regla IoBuildSynchronousFsdRequestWaitTimeout notifica un defecto si detecta que este controlador esperará indefinidamente hasta que se devuelva el controlador inferior, ya que es necesario indicar el evento del IRP en la rutina de finalización.

RequestedPowerIrp

La regla RequestedPowerIrp especifica que el controlador llama a PoRequestPowerIrp con la *Irp variable de puntero establecida en NULL.

Para seleccionar el conjunto de reglas LocalIrpProcessing

  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 LocalIrpProcessing.

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

    msbuild /t:sdv /p:Inputs="/check:LocalIrpProcessing.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 comprobadores de controladores estáticos (MSBuild).