פתרון מימוש באמצעות KMDF¶
הרחבת הסכום מתחילה בפורמט קבוע, למשל Version, Left ו־Right מטיפוס ULONG. לפני החיבור בודקים ש־Left אינו גדול מ־MAXULONG פחות Right. בדיקה של התוצאה אחרי חיבור שכבר גלש אינה הדרך הפשוטה להוכיח את הגבול.
יש להעתיק את כל שדות הקלט למשתנים מקומיים לפני כתיבת הפלט, משום שב־METHOD_BUFFERED אותו system buffer משמש לשני הכיוונים. ה־completion צריך להחזיר בדיוק sizeof של מבנה הפלט בגרסה שהתקבלה, ולא את inputLength.
שינוי תור ושינוי הוכחה¶
בתור sequential עם בקשה אחת פעילה, callback קצר יכול לעדכן מונה ללא תחרות מצד callback בקשה נוסף מאותו תור, כל עוד ההנחות מתקיימות. בתור parallel שני callbacks יכולים להיכנס למסלול העדכון, ולכן נדרשת נעילה, פעולה אטומית מתאימה או synchronization scope.
גם תור sequential אינו מגן מפני timer שמעדכן אותו מונה. צריך לזהות את כל הכותבים והקוראים, לא רק את סוג התור. אם בוחרים סנכרון אוטומטי, בודקים אילו callbacks משתתפים בו ואת התאמת ה־IRQL שלהם.
הורות ובעלות¶
התור נוצר כילד של device ולכן אינו דורש WdfObjectDelete ידני בכל מסלול כשל לאחר יצירת ההתקן. בקשה שנמסרה ל־driver עדיין דורשת completion או העברת בעלות; היא אינה "נעלמת נכון" רק משום שההורה יימחק בעתיד.
משאב חיצוני כגון מיפוי MMIO, buffer שהוקצה ישירות או רישום callback שאינו WDF דורש ניקוי בנקודה המתאימה לחוזהו. ניקוי ההתקן אינו תחליף לעצירת משתמשים במשאב.
הדוח התקין מפריד בין הצלחת בנייה לבין הצלחת טעינה ובדיקה. קובץ sys שנוצר אינו מוכיח שה־INF תקין, שה־ACL נכון או שמרוצי cancel ו־remove טופלו.