Compartir a través de


Regla IrqlIoRtlZwPassive (wdm)

La regla IrqlIoRtlZwPassive especifica que el controlador llama a las DDIs enumeradas en la regla solo cuando se ejecuta en IRQL = PASSIVE_LEVEL.

Esta regla aumenta las reglas IRQL de comprobación de cumplimiento de DDI para PASSIVE_LEVEL. Para obtener más información, vea Conjunto de reglas irql (WDM).

Modelo de controlador: WDM

Comprobaciones de errores encontradas con esta regla: Comprobación de errores 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x20023)

Ejemplo

El código siguiente infringe esta regla:

//
// KeAcquireSpinLock raises the IRQL to DISPATCH_LEVEL.
//

KeAcquireSpinLock (&Lock, &OldIrql);

//
// ERROR: IoGetDriverDirectory can only be called at IRQL == PASSIVE_LEVEL.
//

IoGetDriverDirectory (DriverObject,
                      DriverDirectoryData,
                      0,
                      &DirectoryHandle);

KeReleaseSpinLock (&Lock, OldIrql);

Para obtener más información sobre los niveles de IRQL, consulte Rutinas de distribución e IRQL y Administración de prioridades de hardware.

Cómo probar

En tiempo de compilación

Ejecute el Comprobador de controladores estáticos y especifique la regla IrqlIoRtlZwPassive .

Usa los pasos siguientes para ejecutar un análisis de tu código:
  1. Prepara el código (usa declaraciones de tipos de rol).
  2. Ejecuta el comprobador de controlador estático.
  3. Consulta y analiza los resultados.

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

En tiempo de ejecución

Puede activar el cumplimiento de DDI: reglas IRQL adicionales para uno o varios controladores mediante la línea de comandos Verifier.exe. Para obtener más información, vea Seleccionar opciones del comprobador de controladores. Debe reiniciar el equipo para activar o desactivar las reglas de cumplimiento de DDI: IRQL adicionales.

En la línea de comandos, la comprobación de DDI Compliance - Additional IRQL se representa mediante un valor de clase de regla de 35. Por ejemplo:

verifier /ruleclasses 35 /driver MyDriver.sys

O BIEN

verifier /rc 35 /driver MyDriver.sys

La comprobación irQL adicional estará activa después de reiniciar el equipo.

Se aplica a

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetDeviceDirectory

IoGetDriverDirectory

IoOpenDeviceInterfaceRegistryKey

IoOpenDeviceRegistryKey

RtlCreateRegistryKey

RtlCreateSystemVolumeInformationFolder

RtlWriteRegistryValue

ZwCreateDirectoryObject

ZwCreateFile

ZwCreateKeyTransacted

ZwDeleteFile

ZwDeleteValueKey

ZwFlushBuffersFileEx

ZwFlushBuffersFile

ZwRenameKey

ZwSetEaFile

ZwSetInformationFile

ZwSetInformationKey