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.