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.
Wenn Sie die Option NDIS/WIFI-Überprüfung ausgewählt haben und die Treiberüberprüfung erkennt, dass der Treiber gegen eine der NDIS-/WLAN-Timeoutregeln verstößt, generiert driver verifierBug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (wobei Parameter 1 dem Bezeichner der spezifischen NDIS/WLAN-Timeoutregel entspricht).
Wenn driver verifier eine NDIS/WIFI-Timeoutregel testet, z. B. NdisTimedOidComplete, erwartet der Abrufmechanismus der Driver Verifier eine Antwort vom Miniporttreiber innerhalb einer Reihe von Zyklen. Jede zeitlimitierte Regel hat ihren eigenen maximal zulässigen Zyklus definiert. Wenn das Maximum überschritten wird, generiert Driver Verifier eine Fehlerüberprüfung. In diesem Abschnitt werden einige Beispielstrategien zum Debuggen dieser Verstöße beschrieben.
Debuggen von NDIS/WIFI-Timeoutfehlern
- Verwenden von !analyze zum Anzeigen von Informationen zur Fehlerüberprüfung
- Verwenden des !ruleinfo-Erweiterungsbefehls
- Klicken Sie auf den Link LAST_CALL_STACK, um den Speicherort des Verstoßes zu identifizieren.
- Beheben der Ursache für die Verletzung des NDIS/WIFI-Timeouts
Verwenden von !analyze zum Anzeigen von Informationen zur Fehlerüberprüfung
Wie bei jeder fehlergesteuerten Überprüfung besteht der beste erste Schritt darin, den Befehl !analyze -v auszuführen, sobald Sie die Kontrolle über den Debugger haben.
DRIVER_VERIFIER_DETECTED_VIOLATION (c4)
A device driver attempting to corrupt the system has been caught. This is
because the driver was specified in the registry as being suspect (by the
administrator) and the kernel has enabled substantial checking of this driver.
If the driver attempts to corrupt the system, bugchecks 0xC4, 0xC1 and 0xA will
be among the most commonly seen crashes.
Arguments:
Arg1: 00092003, ID of the 'NdisTimedOidComplete' rule that was violated.
Arg2: 8521dd34, A pointer to the string describing the violated rule condition.
Arg3: 9c17b860, Address of internal rule state (second argument to !ruleinfo).
Arg4: 9c1f3480, Address of supplemental states (third argument to !ruleinfo).
Im folgenden Abschnitt der !analyze -v-Ausgabe wird der Grund, warum die Regel unter verletzt wurde, im Feld DV_VIOLATED_CONDITION angezeigt. Der Abschnitt DV_MSDN_LINK ist auch nützlich, um einen Link zur Dokumentation zu dieser Regel zu abrufen.
Debugdetails:
*** ERROR: Module load completed but symbols could not be loaded for NdisTimedOidComplete.sys
DV_VIOLATED_CONDITION: Timeout on completing an NDIS OID request.
DV_MSDN_LINK: https://learn.microsoft.com/windows-hardware/drivers/devtest/ndis-ndistimedoidcomplete
DRIVER_OBJECT: 98a87980
IMAGE_NAME: NdisTimedOidComplete.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 5229c857
MODULE_NAME: NdisTimedOidComplete
FAULTING_MODULE: 9fee1000 NdisTimedOidComplete
Weiter unten in dieser Analyseausgabe können Sie auf den Link unter dem Abschnitt DV_RULE_INFO klicken, um weitere Regelbeschreibungen zu erhalten. Für den Timeouttyp von Regeln enthält der aktuelle Stapel möglicherweise keine relevanten Informationen.
DV_RULE_INFO: 0x92003
BUGCHECK_STR: 0xc4_NdisTimedOidComplete_XDV
DEFAULT_BUCKET_ID: WIN8_DRIVER_FAULT
PROCESS_NAME: System
CURRENT_IRQL: 2
ANALYSIS_VERSION: 6.13.0016.1929 (debuggers(dbg).130725-1857) amd64fre
LAST_CONTROL_TRANSFER: from 80f87fd3 to 80f0ed14
STACK_TEXT:
8912380c 80f87fd3 00000003 e6c3476e 00000065 nt!RtlpBreakWithStatusInstruction
89123860 80f87aed 825a6138 89123c5c 89123cac nt!KiBugCheckDebugBreak+0x1f
89123c30 80f0d8d6 000000c4 00092003 8521dd34 nt!KeBugCheck2+0x676
89123c54 80f0d80d 000000c4 00092003 8521dd34 nt!KiBugCheck2+0xc6
89123c74 85211584 000000c4 00092003 8521dd34 nt!KeBugCheckEx+0x19
89123cac 85216d54 9c17b860 9c1f3480 9c17b8dc VerifierExt!SLIC_StatefulAbort+0x1a4
89123cd0 85216ffe 85220000 85215f5b 00000000 VerifierExt!Ndis_OnTimerExpire+0x234
89123cd8 85215f5b 00000000 80ecd56a 843d0c38 VerifierExt!CheckOnTimerExpire+0x26
89123ce0 80ecd56a 843d0c38 00000000 80ecd502 VerifierExt!XdvPassiveTimerRoutine+0x1d
89123d24 80eec133 882befd0 00000000 887debc0 nt!IopProcessWorkItem+0x68
89123d70 80ec1162 00000000 e6c342be 00000000 nt!ExpWorkerThread+0x14f
89123db0 80f23201 80eebfe4 00000000 00000000 nt!PspSystemThreadStartup+0x58
89123dbc 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x15
Verwenden des !ruleinfo-Erweiterungsbefehls
Das Feld DV_RULE_INFO: der !analyze-Ausgabe zeigt einen Link zu dem Befehl an, den Sie verwenden können, um weitere Informationen zu diesem Regelverstoß zu finden. Wenn Sie in diesem Beispiel auf den Link klicken, wird der Befehl !ruleinfo mit dem RULE_ID (0x92003) der Fehlerüberprüfungswerte Arg3 und Arg 4 ausgeführt.
kd> !ruleinfo 0x92003 0xffffffff9c17b860 0xffffffff9c1f3480
RULE_ID: 0x92003
RULE_NAME: NdisTimedOidComplete
RULE_DESCRIPTION:
This rule verifies if an NDIS miniport driver completes an OID in time.
The OID is tracked (a.k.a., TRACKED_OBJECT). Use !ndiskd.oid .
MSDN_LINK: https://learn.microsoft.com/windows-hardware/drivers/devtest/ndis-ndistimedoidcomplete
CONTEXT: Miniport 0x86BD10E8
CURRENT_TIME (Timed Rules): 168 seconds
TRACKED_OBJECT: 0x86633804
LAST_CALL_STACK: 0x9C1F3480 + 0x10
RULE_STATE: 0x9C1F3480
Identifizieren des Speicherorts des Verstoßes
In dem hier verwendeten Beispiel verfügt der Miniporttreiber, NdisTimedOidComplete.sys, über einen Standbyzyklus, der in seine MPOidRequest-Funktion eingefügt wird. Sie können dies überprüfen, indem Sie in der !ruleinfo-Ausgabe auf den Link LAST_CALL_STACK klicken. Dies ist die letzte Aufrufliste, die von Driver Verifier gesehen wurde, wobei wir sehen, dass NDIS ndisMInvokeOidRequest aufgerufen hat, bevor das Timeout aufgetreten ist.
kd> dps 0x9C1F3480 + 0x10
9c1f3490 850e1e37 ndis!ndisMInvokeOidRequest+0x16641
9c1f3494 850765c8 ndis!ndisMDoOidRequest+0x24a
9c1f3498 8507552a ndis!ndisQueueOidRequest+0x2fa
9c1f349c 8507372b ndis!ndisQuerySetMiniportEx+0xd9
9c1f34a0 85073646 ndis!ndisQuerySetMiniport+0x18
9c1f34a4 850dd9c8 ndis!ndisMDoMiniportOp+0x8c
9c1f34a8 850dd916 ndis!ndisMNotifyMachineName+0xe4
9c1f34ac 85104005 ndis!ndisMInitializeAdapter+0xad7
Beheben der Ursache für die Verletzung des NDIS WIFI-Timeouts
Wenn das Absturzabbild für eine Zeitregel generiert wurde, besteht die Möglichkeit, dass die Grundursache zum Zeitpunkt des Absturzabbilds gefunden werden kann. Weitere Informationen zum Debuggen finden Sie unter NDIS-Erweiterungen (Ndiskd.dll) und Erste Schritte mit NDISKD. Möglicherweise müssen Sie sich auch ETW-Protokolle (Ereignisablaufverfolgung für Windows) ansehen, wenn Ihr Treiber ETW implementiert hat. Wenn diese Regel nicht aktiviert wurde, tritt dieser Fehler auf, wenn die Benutzeranwendung bestenfalls hängen bleibt, oder eine Fehlerprüfung 0x9F: DRIVER_POWER_STATE_FAILURE im schlimmsten Fall.
Verwandte Themen
NDIS-Erweiterungen (Ndiskd.dll)