Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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