לדלג לתוכן

תרגול ביטול וסיום בקשות

הרחיבו את מודל החיים כך שיתאר גם ביטול בזמן שהבקשה עדיין בתור, כשל בהעברה לתור וכשל ברישום MarkCancelableEx. לכל מסלול צריכה להיות תוצאה סופית אחת ובעלים ידוע.

כתבו טבלת בעלות עבור בקשה שנמצאת בתור manual, מוצאת על ידי timer ומושלמת מיד. השוו אותה לבקשה שנשמרת ב־context למשך פעולה ארוכה וזקוקה ל־EvtRequestCancel.

נתחו קוד שבו callback הביטול קורא WdfRequestComplete, ואילו timer קורא לאחר מכן WdfRequestUnmarkCancelable על עותק ישן של ה־handle. הסבירו מדוע הוספת WdfObjectReference אינה מתקנת אוטומטית את הפרת החוזה.

ב־VM בלבד, תכננו בדיקות של cancel לפני הוצאה, cancel אחרי הוצאה ו־file cleanup בזמן המתנה. אין צורך לייצר bugcheck בכוונה כדי להגיש הוכחת מסלול.