לדלג לתוכן

תרגול חוזה של בקשת התקן

כתבו לקוח user-mode שמכין LAB_HEADER ושני ערכים, פותח רק את device interface של דרייבר המעבדה ושולח את IOCTL_LAB_SUM. בדקו גם output buffer קצר, Count גדול מדי, version לא נתמך ו־header שטוען ל־Size שאינו תואם.

הסבירו למה צריך לסיים לקרוא את קלט METHOD_BUFFERED לפני כתיבת התוצאה, ומה יקרה אם נכתוב result בתחילת ה־buffer ואז נמשיך לקרוא ערכים ממנו. בדקו ש־Information הוא אפס בכל מסלול כשל.

תכננו גרסה אסינכרונית שמשהה את ההשלמה ומאפשרת ביטול. ציירו את מצבי queued, owned-by-worker, cancel-owned ו־completed, וציינו איזה מעבר מעניק זכות לבצע IoCompleteRequest.