IrqlNtifsApcPassive-Regel (wdm)
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)
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.
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. |
NtSetInformationFile
NtWriteFile
NtCreateFile
ZwWriteFile
CcCopyWrite
CcCopyWriteEx
CcDeferWrite
CcFastCopyWrite