Freigeben über


IrqlIoRtlZwPassive-Regel (wdm)

Die IrqlIoRtlZwPassive-Regel gibt an, dass der Treiber die in der Regel aufgeführten DDIs nur aufruft, wenn er mit IRQL = PASSIVE_LEVEL ausgeführt wird.

Diese Regel erweitert die IRQL-Regeln für die DDI-Konformitätsüberprüfung für PASSIVE_LEVEL. Weitere Informationen finden Sie unter Irql Rule Set (WDM).

Treibermodell: WDM

Fehlerüberprüfungen mit dieser Regel gefunden: Fehlerüberprüfung 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x20023)

Beispiel

Der folgende Code verstößt gegen diese Regel:

//
// 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);

Weitere Informationen zu IRQL-Ebenen finden Sie unter Dispatch Routines and IRQLs and Managing Hardware Priorities .

So führen Sie einen Test durch

Beim Kompilieren:

Führen Sie static Driver Verifier aus, und geben Sie die IrqlIoRtlZwPassive-Regel an.

Gehen Sie folgendermaßen vor, um Ihren Code zu analysieren:
  1. Bereiten Sie den Code vor (verwenden Sie Rollentypdeklarationen).
  2. Führen Sie Static Driver Verifier aus.
  3. Überprüfen und analysieren Sie die Ergebnisse.

Weitere Informationen finden Sie unter Verwenden der statischen Treiberüberprüfung, um Fehler in Treibern zu finden.

Zur Laufzeit

Sie können die DDI-Compliance – Zusätzliche IRQL-Regeln für einen oder mehrere Treiber mithilfe der Verifier.exe-Befehlszeile aktivieren. Ausführliche Informationen finden Sie unter Auswählen von Treiberüberprüfungsoptionen. Sie müssen den Computer neu starten, um die DDI-Compliance - Zusätzliche IRQL-Regeln zu aktivieren oder zu deaktivieren.

An der Befehlszeile wird DDI Compliance – Zusätzliche IRQL-Überprüfung durch den Regelklassenwert 35 dargestellt. Beispiel:

verifier /ruleclasses 35 /driver MyDriver.sys

oder

verifier /rc 35 /driver MyDriver.sys

Die zusätzliche IRQL-Überprüfung ist aktiv, nachdem der PC neu gestartet wurde.

Gilt für:

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

IoGetDeviceDirectory

IoGetDriverDirectory

IoOpenDeviceInterfaceRegistryKey

IoOpenDeviceRegistryKey

RtlCreateRegistryKey

RtlCreateSystemVolumeInformationFolder

RtlWriteRegistryValue

ZwCreateDirectoryObject

ZwCreateFile

ZwCreateKeyTransacted

ZwDeleteFile

ZwDeleteValueKey

ZwFlushBuffersFileEx

ZwFlushBuffersFile

ZwRenameKey

ZwSetEaFile

ZwSetInformationFile

ZwSetInformationKey