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:
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:
O BIEN
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