Regola IrqlIoRtlZwPassive (wdm)
La regola IrqlIoRtlZwPassive specifica che il driver chiama le DDI elencate nella regola solo quando viene eseguito in IRQL = PASSIVE_LEVEL.
Questa regola aumenta le regole IRQL di controllo della conformità DDI per PASSIVE_LEVEL. Per altre informazioni, vedere Set di regole Irql (WDM).
Modello di driver: WDM
Verifica bug trovata con questa regola: Controllo bug 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x20023)
Esempio
Il codice seguente viola questa regola:
//
// 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);
Per altre informazioni sui livelli IRQL, vedere Dispatch Routines and IRQLs and Managing Hardware Priorities.For more information about IRQL levels, see Dispatch Routines and IRQLs and Managing Hardware Priorities.
Come eseguire il test
In fase di compilazione |
---|
Eseguire Static Driver Verifier e specificare la regola IrqlIoRtlZwPassive . Usa i passaggi descritti di seguito per eseguire un'analisi del codice:
Per altre informazioni, vedere Using Static Driver Verifier to Find Defects in Drivers.For more information, see Using Static Driver Verifier to Find Defects in Drivers. |
In fase di esecuzione |
---|
È possibile attivare le regole DDI Compliance - IrQL aggiuntive per uno o più driver usando la riga di comando Verifier.exe. Per informazioni dettagliate, vedere Selezione delle opzioni di verifica driver. È necessario riavviare il computer per attivare o disattivare la conformità DDI - Regole IRQL aggiuntive. Nella riga di comando, il controllo DDI Compliance - IrQL aggiuntivo è rappresentato da un valore della classe regola pari a 35. Ad esempio:
OR
Il controllo IRQL aggiuntivo sarà attivo dopo il riavvio del PC. |
Si applica a
IoCreateFileEx
IoCreateFileSpecifyDeviceObjectHint
IoGetDeviceDirectory
IoGetDriverDirectory
IoOpenDeviceInterfaceRegistryKey
IoOpenDeviceRegistryKey
RtlCreateRegistryKey
RtlCreateSystemVolumeInformationFolder
RtlWriteRegistryValue
ZwCreateDirectoryObject
ZwCreateFile
ZwCreateKeyTransacted
ZwDeleteFile
ZwDeleteValueKey
ZwFlushBuffersFileEx
ZwFlushBuffersFile
ZwRenameKey
ZwSetEaFile
ZwSetInformationFile
ZwSetInformationKey