aurain
技术文摘
posts - 137,  comments - 268,  trackbacks - 0
01 2009 档案
使用Prefast测试驱动问题      摘要: Prefast是MS开发的一个测试驱动代码的小工具,
它的作用是尽早找出代码中常的BUG.
在编译时参与进来查找BUG.
  阅读全文
posted @ 2009-01-21 11:52 水 阅读(1618) | 评论 (0)  编辑
构建Windows驱动开发环境      摘要: 详细介绍了三种构造驱动开发环境的方法  阅读全文
posted @ 2009-01-20 15:07 水 阅读(9265) | 评论 (2)  编辑
ICMP数据报结构      摘要: ICMP数据报结构详细分析  阅读全文
posted @ 2009-01-16 13:37 水 阅读(3706) | 评论 (0)  编辑
驱动调试的一般性技巧      摘要: 一般性调试技巧包括打印调试信息、查看dump文件等。这些方法在调试驱动中比较常见,使用也比较简单。  阅读全文
posted @ 2009-01-15 15:31 水 阅读(3663) | 评论 (2)  编辑
驱动调试的几个细节问题IRQL_NOT_LESS_OR_EQUAL      摘要: 今天在调试驱动的时候,发现一个开始觉得很奇怪的问题,就是调用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 水 阅读(4994) | 评论 (0)  编辑
NDIS 中间层驱动(IM Driver)的安装与卸载过程      摘要: 中间层驱动对上层来说,扮演一个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 水 阅读(5378) | 评论 (3)  编辑
使用WinDbg和VMware调试NDIS中间层驱动程序      摘要: 我这里将一步一步的介绍,是从新手的角度来讲的,所以对高手来说,可能有些啰嗦。如果你看完这篇文章还不知道如何设置,那么原因可能有两个:1. 我没讲好;2. 你需要稍微认真看下并实践下,并实现对相关基本概念要有所了解。  阅读全文
posted @ 2009-01-04 16:36 水 阅读(5786) | 评论 (4)  编辑


<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用链接

留言簿(17)

随笔分类(138)

随笔档案(137)

网络开发

最新随笔

搜索

  •  

积分与排名

  • 积分 - 493614
  • 排名 - 36

最新随笔

最新评论

阅读排行榜

评论排行榜