הפסק בדיקת באגים D1 (DRIVER_IRQL_NOT_LESS_OR_EQUAL) ב- USBPORT בעת העברת נתונים USB ובחירה של ממשק USB


מאפייני הבעיה


בעת אתחול ותקשורת עם התקן USB מחובר למחשב שפועל בו Windows 7 או Windows Server 2008 R2, המחשב עלול לקרוס ולאחר עלול לקבל הודעת שגיאת עצירה הדומה להודעה הבאה:

עצירה stop 0x000000D1 (0000000000000000, 0000000000000002, 0000000000000000, parameter4 )
DRIVER_IRQL_NOT_LESS_OR_EQUAL


הגורם


בעיה זו נגרמת על-ידי באג ב- Microsoft USB 1.1 & מנהל ההתקן של היציאה בקר מארח 2.0 (USBPORT. SYS). USBPORT אינו מצליח לבצע סינכרון גישה לרשימה pipe עבור התקן USB, דבר שעלול לגרום ברשימת לא עקבי pipe (פגום) בתנאים מסוימים.

באג זה הוא ניתן להניח להיחשף כאשר התקן ה-USB הוא התקן משולב, עם התקני USB לוגיים מרובים תיושם כצאצאים של פיזי אחד (אב) התקן USB בלבד.

בתרחיש זה, מנהל התקן פונקציה אחת היא בחירת הממשק עבור הפונקציה שלו, פעולה המסירה את הצינורות המשויך הממשק הקודם מרשימת צינור של ההתקן. פעולה זו אינה מוגנת על-ידי נעילה (אינו אטומית), ומשאירה את הרשימה pipe במצב לא עקבי עבור פרק זמן קצר.

בינתיים, מנהל התקן אחר של הפונקציה מבצעת העברות או מאחד הצינורות שלו. בעת עיבוד של העברת USB חדש, מעבר USBPORT הרשימה צינור של ההתקן כדי לאמת את USB לנתב את יעד ההעברה, כלומר נתקלת pipe המוסר מתוך הרשימה, dereferences NULL קישור המצביע מרכיב ה-pipe המוסר, וגורם בדיקת הבאגים D1 להפסיק.

פתרון


כדי לעקוף בעיה זו, המפתח של מנהל התקן USB משולב (החלפת Usbccgp) באפשרותך לסנכרן בקשות בחר ממשק עם בקשות קלט/פלט, כמפורט להלן.

כאשר מתקבלת בקשה לבחור ממשק עבור פונקציה אחת:
  1. בתור כל העברות חדש עבור כל הפונקציות של התקן משולב, מלבד הפונקציה המשויך לבקשה בחר ממשק (המתנה).
  2. לאחר השהיה קצרה (כדי לאפשר בקשות העברה ממתינה לתחילת העיבוד), להעביר את הבקשה בחר ממשק (PDO Usbhub [אובייקט התקן פיזי] עבור התקן מורכב) והמתן להשלמת הבקשה בחר ממשק.
  3. עם השלמת הבקשה בחר ממשק, לחדש העברות עבור כל הפונקציות וקדימה כל העברות בתור בעבר.
שים לב כי הדרך לעקיפת הבעיה המתוארת לעיל עשויים לא מונע לחלוטין את בדיקת הבאגים, בהתאם פרטים של היישום ואת התרחיש שכפול מדויק. עם זאת, שיטה זו לעקיפת הבעיה צפויה להפחית באופן משמעותי את קצב המופע של בעיה זו.

בנוסף, שיטה זו לעקיפת הבעיה ייתכן ההשלכות עבור מנהלי התקנים של הפונקציה USB העברות שלו באופן זמני בתור בעת עיבוד הבקשה בחר ממשק. מפתחי התקן או מנהל התקן USB מי תיתקל בבעיה זו נקראים לערב את התמיכה ערכת מנהלי התקנים של Microsoft Windows כדי לקבל הנחיות ספציפיות יותר עם יישום שיטה זו לעקיפת הבעיה.

מידע נוסף


תיקון עבור בעיה זו עשויים להיחשב עבור גירסת Windows בעתיד.

לקבלת מידע נוסף אודות אפשרויות התמיכה של ערכת מנהלי התקנים של Windows, עיין בקישורים הבאים:
תמיכה עבור ערכות מנהלי התקנים וכלים
תמיכת 7.0 ערכת מנהלי התקנים של Windows