วันศุกร์ที่ 1 สิงหาคม พ.ศ. 2551

WDF Part 0

ห่างหายไปนาน มาคราวนี้ย้ายฝั่งกลับมา Windows บ้าง แต่จะกลับมาทั้งทีต้องมีอะไรเด็ดๆมาว่ากันยาวๆหน่อย น่าจะสนุกแน่ เพราะมีครบทั้ง hardware และ document มาให้ติดตามและทดลองกันให้เห็นจะจะ ไหนๆก็ซื้อมาดองไว้นานได้ที่และ

อันนี้เนี่ย เมื่อก่อนเนี้ยเป็นความใฝ่ฝันอันหนึ่งเลย แต่ด้วยเหตุว่ามันทำเงินให้ไม่ได้ และงานด้านนี้ก็โคตรหายากในเมืองไทย(ก็ต้องกิน ต้องใช้อะนะ) และจะศึกษามันก็ไม่ใช่เรื่องง่ายๆ ก็เลยพักไว้ก่อนแต่ก็ยังคงติดตามข่าวคราวอยู่สม่ำเสมอ เนื่องด้วยได้รับ magazine ชื่อ The NT insider อยู่เป็นประจำ(ฟรีอีกต่างหาก)มาหลายปีแล้ว ส่งตรงมาจาก OSR.com ก็ขอบคุณงามๆไว้ ณ ที่นี้ด้วย ในความกรุณา developer ไทยจนๆคนหนึ่ง กระทั่งทนหน้าด้านรับเค้าฟรีๆต่อไปไม่ไหว ก็เลยช่วยอุดหนุนโดยการซื้อ บอร์ดทดลองเพื่อการพัฒนาสิ่งที่กำลังจะพูดถึงต่อไปนี้

เกริ่นมาตั้งนานแล้ว บอกก็ได้ว่า สิ่งที่จะเขียนต่อไปในซีรี่ย์นี้ก็เรื่อง การพัฒนา driver ด้วย Windows Driver Foundation (WDF) ก็รู้อะนะว่าคงมีคนสนใจน้อยมากหรือไม่มีเลย แต่ถ้าไม่เขียนไว้ มันก็คงไม่มีต่อไป ก็หวังว่าสักวันมันคงทำให้ใครสักคนที่สนใจเริ่มต้นพัฒนาซอฟแวร์ชนิดนี้ได้ง่ายขึ้น ก็ถือเป็นการสืบทอดเจตนารมย์ของ OSR ต่อมาละกัน

เข้าเรื่องนิดหน่อยเลยดีกว่า พอเข้ายุค windows98, Windows2000 เรื่อยมาเนี่ย สถาปัตยกรรมของวินโดวส์ก็เปลี่ยนไปจากเดิมมาก การเขียนโปรแกรมเพื่อติดต่อกับอุปกรณ์ภายนอกนั้นต้องทำผ่านไดรเวอร์เป็นหลัก ดูง่ายๆเลยก็เช่น ปรินเตอร์ หรือ การ์ดจอ การ์ดเสียง หรืออุปกรณ์ที่ต่อภายนอกอื่นๆผ่านทางพอร์ตต่างๆ เข่น USB ก่อนใช้งานเราต้องลงไดรเวอร์ เพื่อให้วินโดวส์รู้จักเสียก่อนจึงจะสามารถใข้งานได้อย่างเต็มที่

ที่นี้ถ้าเราอยากสร้างดีไวซ์ขึ้นมาสักตัวหนึ่งเพื่อขายหรือใช้เองและต้องมีการติดต่อกับคอมพิวเตอร์เพื่อรับส่งคำสั่งและข้อมูลระหว่างกัน ทั้งสองฝั่งก็ต้องรู้จักกัน คุยกันรู้เรื่องได้ตลอดรอดฝั่ง มันก็ต้องมีวิธีการน่ะ ทางด้านตัววินโดวส์เองก็ต้องทำตัวเป็นตัวกลางเพื่อให้โปรแกรมที่เราใช้สามารถติดต่อสื่อสารไปถึงอุปกรณ์ที่ต่ออยู่ได้ ด้วยเหตุนี้เองการพัฒนาไดรเวอร์จึงเป็นสิ่งจำเป็นและดูเป็นศาตร์ด้านมืด(แปดด้าน) เนื่องจากต้องรู้การทำงานของเคอร์เนลของวินโดวส์และอาจจะต้องรู้การเขียนโปรแกรมบนอุปกรณ์นั้นควบคู่ไปด้วย ถ้าไม่มีใครช่วยทำให้อะนะ

เมื่อก่อนเคยพยายามศึกษามันหลายทีแล้ว แต่ไปไม่ถึงไหนสักทีด้วยเหตุผลที่บอกๆไปข้างต้น แต่มาบัดนี้ ด้วย WDF จะทำให้งานของเราง่ายขึ้น รึเปล่า? ก็ลองติดตามกันต่อๆไปละกัน วันนี้เมื่อยแล้ว พอแค่นี้ก่อน