PDA

View Full Version : Driver Programming



imweasel
20-02-2005, 09:39
bí quá nên phải vào đây hỏi các bác:

Yêu cầu là viết một WDM driver (chỉ để test trên Win thôi) sao cho khi device nhận được một dữ liệu nào đó thì sẽ notify một app khác để nó đọc dữ liệu vào. Cái này không dùng interrup được vì làm gì có hardware thật mà int, thành ra em dùng event-based:

driver dùng KTimer và CustomeTimerDpc còn ở App thì dùng WaitForSingleObject, có một ví dụ tương tự với NT-driver ở trong DDK, nhưng vấn đề là khi ở trong driver gọi hàm ObReferenceObjectByHandle thì cái routine đấy lại có IRQL ở DISPATCH_LEVEL : (, trong khi yêu cầu gọi hàm ObRef... thì IRQL phải nằm ở PASSIVE_LEVEL. Các bác nào đã gặp rồi chỉ giáo đàn em một cái ?

Em cũng nghĩ đến việc dùng IRP pending rồi, nhưng dùng cái này clean-up khó mà dài, chính Oney cũng recommend nên dùng event-based hơn

Em completely new với cái kernel prog này, cũng chỉ mới bắt đầu đọc được 1 tháng mà vẫn dốt quá, hip hip

imweasel
21-02-2005, 10:47
đã tự mò ra vấn đề, nó nằm ở cái KeAcquireSpinLock, lệnh này sẽ đưa IRQL lên DPC_LEVEL, để nó trong cái vòng switch để access buffer mà quên mất

chắc k có ai ở đây lập trình driver bao giờ

Kijuto Riddle
24-02-2005, 11:00
inweasel học lập trình hệ thống ở đâu vậy. Tui cũng có học chút ít chứ không chuyên sâu như bạn. Híc, đọc bài post của bạn mà chẳng hiểu gì cả.

imweasel
24-02-2005, 14:54
giá mà tôi có thời gian để học : (

tài liệu tôi đã đọc qua: chủ yếu là DDK doc, sách WDM của Oney 2nd edition (cái này do boss mua) và crash cái máy mỗi buổi khoảng 10 lần (vì chỉ có một PC duy nhất, vừa làm host vừa làm target)

jiSh@n
25-02-2005, 19:44
Kiếm DDK ở đâu hay vậy? Share cho mình được ko?

imweasel
25-02-2005, 23:01
DDK có thể order từ MS, chỉ mất tiền ship. Còn giờ mình không ở VN, bộ ra hàng đĩa không có sao ?

Nhớ là DDK của Win2k trước vẫn cho down free, chắc thế nào chả có người kịp nhanh tay down về rồi burn ? Nhưng ở VN k phát triển các sản phẩm phần cứng nên e là ít người làm về mảng này, chắc sẽ khó kiếm DDK ( :

Kijuto Riddle
26-02-2005, 09:39
giá mà tôi có thời gian để học : (
...crash cái máy mỗi buổi khoảng 10 lần (vì chỉ có một PC duy nhất, vừa làm host vừa làm target)
Mấy cái Virtual Machine hình như kết nối được hai cái virtual với nhau thì phải. Kijuto chưa phải lập trình hệ thống - liên kết mạng nên không gặp tình huống này. Chỉ duy có lần phải viết cái trình Backup Master Boot thì mới phải dùng virtual machine thế mạng cho cái HDD + toàn bộ dữ liệu. Thế mà cũng chết mấy lần cũng đã ngại, đằng này mà crash liên tục kiểu đó, cũng may là crash kiểu đó chắc không tổn hại đến dữ liệu.

jiSh@n
01-03-2005, 08:24
Hix, DDK Win2k3 thì MS cho free nhưng order mất 25$, phải xài credit card mới được. Pó tay. DDK Suite thì tới 199$. Ra hỏi khắp phố CD mà chẳng thằng nào biết tới DDK là gì chứ đừng nói là có.

congkhanh
09-03-2005, 19:20
thử tìm hiểu DDK qua MingGW xem....