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:
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:
oder
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