STOP D1 (DRIVER_IRQL_NOT_LESS_OR_EQUAL) Fehlercode im bis auf eine Ausnahme und Datenübertragung USB USB-Schnittstelle auswählen


Problembeschreibung


Beim Initialisieren und Kommunikation mit einem USB-Gerät mit einem Computer mit Windows 7 oder Windows Server 2008 R2 angeschlossen, kann der Computer abstürzen und möglicherweise eine Stop-Fehlermeldung, die der folgenden ähnelt:

STOP 0x000000D1 (0000000000000000, 0000000000000002 0000000000000000, parameter4 )
DRIVER_IRQL_NOT_LESS_OR_EQUAL


Ursache


Dieses Problem wird verursacht durch einen Fehler in den Microsoft USB 1.1 und 2.0 Anschluss am Host-Controller-Treiber (bis auf eine Ausnahme. SYS). Bis auf eine Ausnahme kann eine inkonsistente (beschädigte) Pipe Liste unter bestimmten Umständen möglicherweise Zugriff auf die Pipe-Liste für ein USB-Gerät synchronisieren.

Dieser Fehler wird nur ausgesetzt werden, wenn das USB-Gerät ein Verbundgerät mit mehreren logischen Geräte als Kinder physisch (übergeordneten) USB-Gerät ist.

In diesem Szenario wird ein Funktionstreiber Schnittstelle für seine Funktion Auswahl der Rohre mit vorherigen Schnittstelle aus der Geräteliste Rohr entfernt. Dieser Vorgang ist nicht durch eine Sperre (ist nicht atomare) geschützt und Pipe Liste in einen inkonsistenten Zustand für einen kurzen Zeitraum.

Inzwischen ist eine andere Funktionstreiber, oder seine Rohre übertragen. Verarbeitet eine neue USB-Übertragung bis auf eine Ausnahme führt das Gerät Pipe Liste USB überprüft Rohr, das Ziel der Übertragung findet eine Pipe aus der Liste entfernt dereferenziert Link Nullzeiger aus der Pipe entfernt und verursacht Stop D1-Fehlercode.

Problemlösung


Um dieses Problem zu umgehen, kann der Entwickler ein Composite USB-Treiber (Usbccgp Austausch) Schnittstelle wählen Anfragen wie folgt e/a-Anfragen synchronisieren.

Wenn eine Schnittstelle wählen für eine Funktion eingeht:
  1. Warteschlange (Ausstehend) alle neuen überträgt alle Verbundgerät als Schnittstelle wählen Sie Anforderung zugeordnete Funktion.
  2. Nach einer kurzen Verzögerung (zu ausstehenden Anträge die Verarbeitung beginnt) übermittelt Anforderung Schnittstelle wählen (der Usbhub PDO [physikalische Geräteobjekt] für das kombinierte Gerät) und warten Sie, bis zum Abschluss der Anforderung Schnittstelle auswählen.
  3. Fortsetzen Sie nach Abschluss der Anforderung Schnittstelle wählen Überträge für alle Funktionen und Weiterleiten Sie alle überträgt zuvor in Warteschlange.
Beachten Sie, dass die obige Abhilfe nicht Fehlercode je nach Implementierung und exakte Wiedergabe Szenario kann. Diese Lösung wird jedoch reduziert die bei Auftreten des Problems.

Darüber hinaus diese Abhilfe Folgen für die USB-Funktion Treiber möglicherweise deren Übertragung vorübergehend eine während der Verarbeitung der Anforderung Schnittstelle auswählen. USB-Geräts oder Treibers Entwickler dieses Problem sollten sich Microsoft Windows Driver Kit-Unterstützung für Weitere Hinweise bei der Implementierung dieser Lösung.

Weitere Informationen


Eine Fehlerbehebung für dieses Problem ist für eine zukünftige Version von Windows gelten.

Weitere Informationen zu Windows Driver Kit-Supportoptionen finden Sie unter folgenden Links:
Unterstützung für Driver Kits und Tools
Windows Driver Kit 7.0-Unterstützung