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 IrqlNtifsApcPassive-Regel gibt an, dass der Treiber die in der Regel aufgeführten DDIs nur aufruft, wenn er entweder bei IRQL = PASSIVE_LEVEL oder unter IRQL <= APC_LEVEL ausgeführt wird.
Treibermodell: WDM
Fehlerüberprüfung(en) mit dieser Regel gefunden: Fehlerprüfung 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x20024)
Beispiel
Der folgende Code verstößt gegen diese Regel:
//
// KeAcquireSpinLock raises the IRQL to DISPATCH_LEVEL.
//
KeAcquireSpinLock (&Lock, &OldIrql);
//
// ERROR: ZwWriteFile can only be called at IRQL == PASSIVE_LEVEL.
//
ZwWriteFile (Handle,
NULL,
NULL,
NULL,
IoStatusBlock,
Buffer,
BufferLength,
NULL,
NULL);
KeReleaseSpinLock (&Lock, OldIrql);
Weitere Informationen zu IRQL-Ebenen finden Sie unter Dispatch Routines und IRQLs und Verwalten von Hardwareprioritäten.
So führen Sie einen Test durch
Beim Kompilieren: |
---|
Führen Sie Static Driver Verifier aus, und geben Sie die IrqlNtifsApcPassive-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-Kompatibilität – Zusätzliche IRQL-Regeln für einen oder mehrere Treiber aktivieren, indem Sie die befehlszeile Verifier.exe verwenden. Weitere Informationen finden Sie unter Auswählen von Treiberüberprüfungsoptionen. Sie müssen den Computer neu starten, um die DDI-Kompatibilität – Zusätzliche IRQL-Regeln zu aktivieren oder zu deaktivieren. In der Befehlszeile wird DDI Compliance – Zusätzliche IRQL-Überprüfung durch den Regelklassenwert 35 dargestellt. Beispiel:
oder
Die zusätzliche IRQL-Überprüfung ist nach dem Neustart des PCs aktiv. |
Gilt für:
NtSetInformationFile
NtWriteFile
NtCreateFile
ZwWriteFile
CcCopyWrite
CcCopyWriteEx
CcDeferWrite
CcFastCopyWrite