לדלג לתוכן

תרגול חיי התקן וניהול כוח

ציירו טבלת משאבים עבור device context, תור, timer, מיפוי רגיסטרים ו־DMA transaction. לכל משאב ציינו מתי הוא נוצר, מתי מותר להשתמש בו ומי מפסיק את המשתמשים בו.

נתחו את הסדר הפגום הבא: רכישת נעילת device, קריאה ל־WdfTimerStop עם TRUE ושחרור הנעילה. תארו תזמון שבו ה־timer ממתין לאותה נעילה והמערכת נתקעת.

ב־VM של הפרויקט, בדקו restart של התקן התוכנה בזמן שבקשה ממתינה. שמרו trace של D0Exit, ביטול הבקשה ו־D0Entry הבא. אין להניח מראש שהבקשה תחזור תמיד באותו קוד שגיאה בכל נקודת תזמון.

הסבירו מדוע surprise removal אינו המקום לשלוח פקודת חומרה אחרונה, ומדוע device context חי אינו מוכיח שהרגיסטרים עדיין נגישים.