Regra IrqlIoRtlZwPassive (wdm)
A regra IrqlIoRtlZwPassive especifica que o driver chama os DDIs listados na regra somente quando está sendo executado em IRQL = PASSIVE_LEVEL.
Essa regra aumenta as regras IRQL de Verificação de Conformidade da DDI para PASSIVE_LEVEL. Para obter mais informações, consulte Conjunto de regras irql (WDM).
Modelo de driver: WDM
Marcar de bugs encontradas com esta regra: 0xC4 de Verificação de Bugs: DRIVER_VERIFIER_DETECTED_VIOLATION (0x20023)
Exemplo
O código a seguir viola essa regra:
//
// 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 obter mais informações sobre os níveis de IRQL, consulte Rotinas de expedição e IRQLs e Gerenciamento de prioridades de hardware.
Como testar
Em tempo de compilação |
---|
Execute o Verificador de Driver Estático e especifique a regra IrqlIoRtlZwPassive . Use as seguintes etapas para executar uma análise do código:
Para obter mais informações, consulte Usando o verificador de driver estático para localizar defeitos em drivers. |
Em tempo de execução |
---|
Você pode ativar as regras DDI Compliance – IRQL adicionais para um ou mais drivers usando a linha de comando Verifier.exe. Para obter detalhes, consulte Selecionando opções do verificador de driver. Você deve reiniciar o computador para ativar ou desativar as regras DDI Compliance – IRQL adicionais. Na linha de comando, a Verificação de Conformidade de DDI – IRQL adicional é representada por um valor de classe de regra de 35. Por exemplo:
OU
A verificação IRQL adicional estará ativa depois que o computador for reinicializado. |
Aplica-se a
IoCreateFileEx
IoCreateFileSpecifyDeviceObjectHint
IoGetDeviceDirectory
IoGetDriverDirectory
IoOpenDeviceInterfaceRegistryKey
IoOpenDeviceRegistryKey
RtlCreateRegistryKey
RtlCreateSystemVolumeInformationFolder
RtlWriteRegistryValue
ZwCreateDirectoryObject
ZwCreateFile
ZwCreateKeyTransacted
ZwDeleteFile
ZwDeleteValueKey
ZwFlushBuffersFileEx
ZwFlushBuffersFile
ZwRenameKey
ZwSetEaFile
ZwSetInformationFile
ZwSetInformationKey