Condividi tramite


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:
  1. Prepara il codice (usa dichiarazioni di tipo ruolo).
  2. Esegui Driver Verifier statico.
  3. Visualizza e analizza i risultati.

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:

verifier /ruleclasses 35 /driver MyDriver.sys

OR

verifier /rc 35 /driver MyDriver.sys

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