Fehlerprüfung 0xE6: DRIVER_VERIFIER_DMA_VIOLATION
Die DRIVER_VERIFIER_DMA_VIOLATION-Fehlerprüfung weist den Wert 0x000000E6 auf. Dies ist der Fehlerüberprüfungscode für alle Verstöße gegen die Driver Verifier DMA-Überprüfung .
Wichtig
Dieser Artikel richtet sich an Programmierer. Wenn Sie ein Kunde sind, der während der Verwendung Ihres Computers einen Bluescreen-Fehlercode erhalten hat, finden Sie weitere Informationen unter Behandeln von Bluescreenfehlern.
Hinweis
Der E6-Hauptfehlerüberprüfungscode kann beobachtet werden, wenn die Treiberüberprüfung nicht aktiviert ist. Weitere Informationen finden Sie auf der Seite DMA-Überprüfung , wenn dieser Code ohne aktivierte Treiberüberprüfung auftritt.
DRIVER_VERIFIER_DMA_VIOLATION-Parameter
Parameter 1 ist der einzige parameter von Interesse. Dieser Parameter identifiziert den genauen Verstoß. Wenn ein Debugger angefügt ist, wird im Debugger eine informative Meldung angezeigt.
Parameter 1 | Fehlerursache und Debuggermeldung |
---|---|
0x00: Verschiedene DMA-Fehler. |
Dieser Code kann zwei Arten von Fehlern darstellen, wie durch Parameter 2 angegeben: 0x1: Der Treiber hat versucht, zu viele Bytes an das Ende der Kartenregisterdatei zu leeren. Parameter 3: Anzahl der in der MDL noch verfügbaren Bytes. Parameter 4: Anzahl der Bytes, die zum Leeren angefordert wurden. 0x2: Windows hat keine zusammenhängenden Kartenregister mehr. Parameter 3: Erforderliche Zuordnungsregister. Parameter 4: Anzahl zusammenhängender Kartenregister. |
0x01 |
Der Leistungsindikator hat sich verringert. Die alten und neuen Werte des Zählers werden angezeigt. |
0x02 |
Der Leistungsindikator ist zu schnell gestiegen. Der Zählerwert wird im Debugger angezeigt. |
0x03 |
Der Treiber hat zu viele allgemeine DMA-Puffer freigegeben. In der Regel bedeutet dies, dass derselbe Puffer zweimal freigegeben wurde. Parameter 2: Anzahl der freigegebenen zusätzlichen allgemeinen Puffer. |
0x04 |
Der Treiber hat zu viele DMA-Adapterkanäle freigegeben. In der Regel bedeutet dies, dass derselbe Adapterkanal zweimal freigegeben wurde. Parameter 2: Anzahl der freigegebenen zusätzlichen Adapterkanäle. |
0x05 |
Der Treiber hat zu viele DMA-Kartenregister freigegeben. In der Regel bedeutet dies, dass dasselbe Kartenregister zweimal freigegeben wurde. Parameter 2: Anzahl der freigegebenen zusätzlichen Kartenregister. |
0x06 |
Der Treiber hat zu viele DMA-Scatter-/Gather-Listen freigegeben. In der Regel bedeutet dies, dass die gleiche Punkt-/Gather-Liste zweimal freigegeben wurde. Parameter 2: Zugeordnete Punktsammlungslisten. Parameter 3: Freigegebene Punktsammlungslisten. |
0x07 |
Der Treiber hat versucht, den Adapter freizugeben, ohne zuerst alle gängigen Puffer freizugeben. Parameter 2: Zeiger auf den DMA-Adapter. Parameter 3: Anzahl der ausstehenden allgemeinen Puffer. Parameter 4: Zeiger auf die entsprechenden internen Prüferdaten. |
0x08 |
Der Treiber hat versucht, den Adapter freizugeben, ohne zuerst alle Adapterkanäle, allgemeinen Puffer oder Punkt-/Sammlungslisten freizugeben.
Parameter 2: Zeiger auf den DMA-Adapter. Parameter 3: Anzahl ausstehender Adapterkanäle. Parameter 4: Zeiger auf die entsprechenden internen Prüferdaten. |
0x09 |
Der Treiber hat versucht, den Adapter freizugeben, ohne zuerst alle Kartenregister freizugeben. Parameter 2: Zeiger auf den DMA-Adapter. Parameter 3: Anzahl ausstehender Kartenregister. Parameter 4: Zeiger auf die entsprechenden internen Prüferdaten. |
0x0A |
Der Treiber hat versucht, den Adapter freizugeben, ohne zuerst alle Scatter/Gather-Listen freizugeben. Parameter 2: Zeiger auf den DMA-Adapter. Parameter 3: Anzahl der ausstehenden Punktsammlungslisten. Parameter 4: Zeiger auf die entsprechenden internen Prüferdaten. |
0x0B |
Der Treiber hat zu viele Adapterkanäle gleichzeitig zugeordnet (pro Adapter ist nur ein Adapterkanal zulässig.) Parameter 2: Ausstehende Adapterkanäle. |
0x0C |
Der Treiber hat versucht, zu viele Kartenregister gleichzeitig zuzuordnen. Parameter 2: Erforderliche Zuordnungsregister. Parameter 3: Maximale Zuordnungsregister. |
0x0D |
Der Treiber hat seine Adapterpuffer nicht geleert. Parameter 2: Anzahl der zugeordneten Bytes. Parameter 3: Maximale Anzahl von Bytes, die gleichzeitig zugeordnet werden können. |
0x0E |
Der Treiber hat eine DMA-Übertragung versucht, ohne den Puffer zu sperren. Der fragliche Puffer befand sich im ausgelagerten Speicher. Parameter 2: Adresse des DMA-Puffers MDL. |
0x0F |
Der Treiber oder die Hardware schreibt außerhalb des zugeordneten DMA-Puffers. Parameter 2 ist der Verstoßcode. 0x01 : Das Tag, bevor der DMA-Puffer geändert wurde. Das erwartete Tag ist DmaVrfy0. Parameter 3: Pufferlänge. Parameter 4: Pufferstart. 0x02 : Das Tag, nachdem der DMA-Puffer geändert wurde. Das erwartete Tag ist DmaVrfy0.Parameter 3: Pufferlänge. Parameter 4: Pufferstart. 0x03: Das kostenlose Kartenregister wurde überschrieben.Parameter 3: Adresse der Beschädigung. Das erwartete Füllmuster ist 0x0F. 0x04: Auffüllung, bevor der Puffer falsch geändert wurde.Parameter 3: Pufferstart. Die erwartete Auffüllung ist 0x0F. Parameter 4: Adresse der Beschädigung. 0x05 : Auffüllung, nachdem der Puffer fälschlicherweise geändert wurde.Parameter 3: Pufferstart. Parameter 4: Adresse der Beschädigung. Das erwartete Auffüllungsmuster ist 0x0F. |
0x10 |
Der Treiber hat versucht, seine Kartenregister freizugeben, während einige noch zugeordnet wurden. Parameter 2: Anzahl der noch zugeordneten Register. |
0x11 |
Der Treiber verfügt über zu viele ausstehende Referenzanzahlen für den Adapter. Parameter 2: Verweisanzahl. Parameter 3: Zeiger auf den DMA-Adapter. Parameter 4: Zeiger auf die entsprechenden internen Prüferdaten. |
0x13 |
Der Treiber hat eine DMA-Routine bei einem nicht ordnungsgemäßen IRQL aufgerufen. Parameter 2 ist der Verstoßcode. 0x01: Die aktuelle IRQL unterscheidet sich von den Erwartungen.Parameter 3: Erwartete IRQL. Parameter 4: Aktuelle IRQL. 0x02 : Der aktuelle IRQL ist höher als erwartet.Parameter 3: Erwartete maximale IRQL. Parameter 4: Aktuelle IRQL. |
0x14 |
Der Treiber hat eine DMA-Routine bei einem nicht ordnungsgemäßen IRQL aufgerufen. |
0x15 |
Der Treiber hat versucht, zu viele Kartenregister zuzuordnen. Parameter 2: Zugeordnete Kartenregister. Parameter 3: Maximale Zuordnungsregister. |
0x16 |
Der Treiber hat versucht, einen Puffer zu leeren, der nicht zugeordnet ist. Parameter 2: Adresse im virtuellen Systemraum des Kartenregisters. Parameter 3: Zeiger auf die entsprechenden internen Prüferdaten. |
0x18 |
Der Treiber hat einen DMA-Vorgang mithilfe eines Adapters versucht, der bereits freigegeben wurde und nicht mehr vorhanden ist. Parameter 2: Zeiger auf den DMA-Adapter. Parameter 3: Zeiger auf die entsprechenden internen Prüferdaten. |
0x19 |
Der Treiber hat einen NULL-DMA_ADAPTER-Wert an eine HAL-Routine übergeben. |
0x1B |
Der Treiber hat eine Adresse und MDL an eine HAL-Routine übergeben. Diese Adresse liegt jedoch nicht innerhalb der Grenzen dieser MDL. Parameter 2: Virtuelle Adresse außerhalb der MDL-Grenzen. Parameter 3 : MDL. |
0x1D |
Der Treiber hat versucht, einen Adressbereich zuzuordnen, der bereits zugeordnet wurde. Parameter 2: Puffer zum Zuordnen des Startes. Parameter 3: Puffer zum Zuordnungsende. Parameter 4: Systemadresse im Puffer, die bereits zugeordnet ist. |
0x1E |
Der Treiber namens HalGetAdapter. Diese Funktion ist veraltet. Stattdessen müssen Sie IoGetDmaAdapter verwenden. |
0x1F |
Ungültiger DMA-Puffer. Der Treiber verweist auf eine ungültige Systemadresse – entweder vor der ersten MDL oder nach dem Ende der ersten MDL, oder indem er eine Übertragungslänge verwendet, die länger als der MDL-Puffer ist und eine Seitengrenze innerhalb des MDL überschreitet.Parameter 2 ist der Verstoßcode. 0x01: Die adresse des virtuellen Puffers befindet sich vor der ersten MDL. Parameter 3: Virtuelle Adresse des Beginns des DMA-Puffers. Parameter 4: Zeiger auf die erste MDL, die den DMA-Puffer beschreibt. 0x02: Die virtuelle Adresse befindet sich nach der ersten MDL. Parameter 3: Virtuelle Adresse des Beginns des DMA-Puffers. Parameter 4: Zeiger auf die erste MDL, die den DMA-Puffer beschreibt. 0x03 : Die zusätzliche Übertragungslänge überschreitet eine Seitengrenze. Parameter 3: Zeiger auf die MDL, die den DMA-Puffer beschreibt. Parameter 4: Länge der DMA-Übertragung. 0x04: Die virtuelle Adresse eines DMA-Puffers ist nicht cachebündig. Parameter 3: Virtuelle Adresse des Beginns des DMA-Puffers. Parameter 4: Zeiger auf MDL, der den DMA-Puffer beschreibt. 0x05: Die DMA-Pufferlänge ist nicht cachebündig. Parameter 3: Länge des DMA-Puffers. Parameter 4: Zeiger auf MDL, der den DMA-Puffer beschreibt. |
0x20 |
Der Treiber hat versucht, ein Kartenregister zu löschen, das nicht zugeordnet wurde. Parameter 2: Zuordnungsregisterbasis. Parameter 3: Die VA des Startvorgangs des DMA-Puffers. Parameter 4: Zeiger auf die MDL, die zum Beschreiben des DMA-Puffers verwendet wird. |
0x21 |
Der Treiber hat versucht, einen Puffer der Länge null für die Übertragung zuzuordnen. Parameter 2: Zeiger auf die entsprechenden internen Prüferdaten. |
0x22 |
DMA-Puffer nicht in System VA zugeordnet. Parameter 2 : MDL |
0x23 |
Ein Kanal, der nicht abgeschlossen oder abgebrochen wurde, kann nicht geleert werden. Parameter 2: Code für Verstöße. Wert: 0x00 : Ungültige Kanalleerung Parameter 3: Controller-ID. Parameter 4: Kanalnummer. |
0x24 |
Unzureichender Puffer für die angeforderte Länge. Parameter 2 : Nicht berücksichtigte Länge. |
0x25 |
Unbekannte Gerätebeschreibungsversion. |
0x26 |
IOMMU hat eine DMA-Verletzung erkannt. Parameter 2: Geräteobjekt des fehlerhaften Geräts. Parameter 3: Fehlerhafte Informationen (in der Regel fehlerhafte physische Adresse). Parameter 4 : Fehlertyp (hardwarespezifisch). |
Ursache
Eine Beschreibung der Ursache finden Sie in der Beschreibung der einzelnen Codes im Abschnitt Parameter.
Lösung
Diese Fehlerüberprüfung kann nur auftreten, wenn driver verifier angewiesen wurde, einen oder mehrere Treiber zu überwachen. Wenn Sie die Treiberüberprüfung nicht verwenden möchten, sollten Sie ihn deaktivieren. Sie können auch erwägen, den Treiber zu entfernen, der dieses Problem verursacht hat.
Wenn Sie der Treiberschreiber sind, verwenden Sie die Informationen, die sie durch diese Fehlerüberprüfung erhalten haben, um die Fehler in Ihrem Code zu beheben.
Weitere Informationen zur Treiberüberprüfung finden Sie unter Driver Verifier.