摘要: 一般性調試技巧包括打印調試信息、查看dump文件等。這些方法在調試驅動中比較常見,使用也比較簡單。
閱讀全文
posted @
2009-01-15 15:31 水 閱讀(3682) |
評論 (2) |
編輯 收藏
摘要: 今天在調試驅動的時候,發現一個開始覺得很奇怪的問題,就是調用RtlStringCbPrintfW函數來格式化WCHAR字符串時,一定藍屏,提示
IRQL_NOT_LESS_OR_EQUAL,并且比較郁悶的是,在虛擬機上有時不會出現,有時會出現,但在真正的主機上一定會出現(Windows xp sp2)。
一般出現IRQL_NOT_LESS_OR_EQUAL,是IRQL在級別高的地方調用了分頁內存,所以,我就想到把當前的IRQL打出來看看,發現在進入函數
的時候,當前的IRQL是0(PASSIVE_LEVEL),而在執行這段代碼的地方,IRQL是2(DISPATCH_LEVEL),是什么原因使得IRQL發生了變化呢?
仔細查看代碼后,發現了原因,因為在執行這段代碼之前,通過NdisAcquireSpinLock獲取旋轉鎖,而在旋轉鎖釋放之前,其中的代碼是跑在
IRQL=2的,另外,RtlStringCbPrintfW需要處理分頁內存(PagedPool),但在IRQL=2的情況下,是只能處理非分頁內存的(NonpagedPool),所以,
閱讀全文
posted @
2009-01-14 17:05 水 閱讀(5032) |
評論 (0) |
編輯 收藏
摘要: 中間層驅動對上層來說,扮演一個Miniport Driver的角色,它在上邊沿向NDIS注冊一組Miniportxxx函數;對于下層Miniport Driver來說,中間層驅動扮演一個Protocol Driver的角色,因此它在下邊沿向NDIS注冊一組Protocolxxx函數。Miniport Driver通過調用NdisMRegisterMiniport向NDIS注冊一組MiniportXxx函數;Protocol Driver 通過調用 NdisRegisterProtocol向NDIS注冊一組ProtocolXxx函數。
閱讀全文
posted @
2009-01-12 15:35 水 閱讀(5422) |
評論 (3) |
編輯 收藏
摘要: 我這里將一步一步的介紹,是從新手的角度來講的,所以對高手來說,可能有些啰嗦。如果你看完這篇文章還不知道如何設置,那么原因可能有兩個:1. 我沒講好;2. 你需要稍微認真看下并實踐下,并實現對相關基本概念要有所了解。
閱讀全文
posted @
2009-01-04 16:36 水 閱讀(5809) |
評論 (4) |
編輯 收藏
摘要: 在傳輸文件的時候,為了顯示傳輸的進度,需要在一行不停的變換數字顯示,找了些資料,發現原來可以很簡單的實現
閱讀全文
posted @
2008-12-05 11:28 水 閱讀(3534) |
評論 (6) |
編輯 收藏
摘要: 常用DNS服務軟件
閱讀全文
posted @
2008-11-28 09:45 水 閱讀(712) |
評論 (0) |
編輯 收藏
摘要: UDT是建立在UDP協議基礎之上的應用層協議,其最終是通過UDP協議來接發數據。
在UDT的實現中,是通過類CChannel來處理的,顧名思義,可以理解為通過UDP管道來接發數據。
閱讀全文
posted @
2008-11-26 11:42 水 閱讀(4924) |
評論 (3) |
編輯 收藏
摘要: 具體介紹了udt包結構
閱讀全文
posted @
2008-11-26 10:52 水 閱讀(2981) |
評論 (0) |
編輯 收藏
摘要: linux下udp頭結構
閱讀全文
posted @
2008-11-21 10:54 水 閱讀(8050) |
評論 (0) |
編輯 收藏
摘要: linux下tcp頭結構及說明
閱讀全文
posted @
2008-11-21 10:48 水 閱讀(1568) |
評論 (0) |
編輯 收藏