使用Prefast測試驅(qū)動問題
摘要: Prefast是MS開發(fā)的一個測試驅(qū)動代碼的小工具,
它的作用是盡早找出代碼中常的BUG.
在編譯時(shí)參與進(jìn)來查找BUG.
閱讀全文
posted @
2009-01-21 11:52 水 閱讀(1636) |
評論 (0) 編輯
構(gòu)建Windows驅(qū)動開發(fā)環(huán)境
摘要: 詳細(xì)介紹了三種構(gòu)造驅(qū)動開發(fā)環(huán)境的方法
閱讀全文
posted @
2009-01-20 15:07 水 閱讀(9326) |
評論 (2) 編輯
ICMP數(shù)據(jù)報(bào)結(jié)構(gòu)
摘要: ICMP數(shù)據(jù)報(bào)結(jié)構(gòu)詳細(xì)分析
閱讀全文
posted @
2009-01-16 13:37 水 閱讀(3736) |
評論 (0) 編輯
驅(qū)動調(diào)試的一般性技巧
摘要: 一般性調(diào)試技巧包括打印調(diào)試信息、查看dump文件等。這些方法在調(diào)試驅(qū)動中比較常見,使用也比較簡單。
閱讀全文
posted @
2009-01-15 15:31 水 閱讀(3689) |
評論 (2) 編輯
驅(qū)動調(diào)試的幾個細(xì)節(jié)問題IRQL_NOT_LESS_OR_EQUAL
摘要: 今天在調(diào)試驅(qū)動的時(shí)候,發(fā)現(xiàn)一個開始覺得很奇怪的問題,就是調(diào)用RtlStringCbPrintfW函數(shù)來格式化WCHAR字符串時(shí),一定藍(lán)屏,提示
IRQL_NOT_LESS_OR_EQUAL,并且比較郁悶的是,在虛擬機(jī)上有時(shí)不會出現(xiàn),有時(shí)會出現(xiàn),但在真正的主機(jī)上一定會出現(xiàn)(Windows xp sp2)。
一般出現(xiàn)IRQL_NOT_LESS_OR_EQUAL,是IRQL在級別高的地方調(diào)用了分頁內(nèi)存,所以,我就想到把當(dāng)前的IRQL打出來看看,發(fā)現(xiàn)在進(jìn)入函數(shù)
的時(shí)候,當(dāng)前的IRQL是0(PASSIVE_LEVEL),而在執(zhí)行這段代碼的地方,IRQL是2(DISPATCH_LEVEL),是什么原因使得IRQL發(fā)生了變化呢?
仔細(xì)查看代碼后,發(fā)現(xiàn)了原因,因?yàn)樵趫?zhí)行這段代碼之前,通過NdisAcquireSpinLock獲取旋轉(zhuǎn)鎖,而在旋轉(zhuǎn)鎖釋放之前,其中的代碼是跑在
IRQL=2的,另外,RtlStringCbPrintfW需要處理分頁內(nèi)存(PagedPool),但在IRQL=2的情況下,是只能處理非分頁內(nèi)存的(NonpagedPool),所以,
閱讀全文
posted @
2009-01-14 17:05 水 閱讀(5033) |
評論 (0) 編輯
NDIS 中間層驅(qū)動(IM Driver)的安裝與卸載過程
摘要: 中間層驅(qū)動對上層來說,扮演一個Miniport Driver的角色,它在上邊沿向NDIS注冊一組Miniportxxx函數(shù);對于下層Miniport Driver來說,中間層驅(qū)動扮演一個Protocol Driver的角色,因此它在下邊沿向NDIS注冊一組Protocolxxx函數(shù)。Miniport Driver通過調(diào)用NdisMRegisterMiniport向NDIS注冊一組MiniportXxx函數(shù);Protocol Driver 通過調(diào)用 NdisRegisterProtocol向NDIS注冊一組ProtocolXxx函數(shù)。
閱讀全文
posted @
2009-01-12 15:35 水 閱讀(5432) |
評論 (3) 編輯
使用WinDbg和VMware調(diào)試NDIS中間層驅(qū)動程序
摘要: 我這里將一步一步的介紹,是從新手的角度來講的,所以對高手來說,可能有些啰嗦。如果你看完這篇文章還不知道如何設(shè)置,那么原因可能有兩個:1. 我沒講好;2. 你需要稍微認(rèn)真看下并實(shí)踐下,并實(shí)現(xiàn)對相關(guān)基本概念要有所了解。
閱讀全文
posted @
2009-01-04 16:36 水 閱讀(5816) |
評論 (4) 編輯