
驱动
j-k
致力于windows下c开发
展开
-
Windows NT 驱动程序开发人员提示 -- 应注意避免
下面是开发人员在使用 Windows NT 设备驱动程序时应当避免的事项列表: 一定不要在没有标注 I/O 请求数据包 (IRP) 挂起 (IoMarkIrpPending) 的情况下通过调度例程返回 STATUS_PENDING。一定不要通过中断服务例程 (ISR) 调用 KeSynchronizeExecution。 它会使系统死锁。一定不要将 DeviceObject->Flag原创 2013-04-26 17:17:01 · 1067 阅读 · 0 评论 -
NDIS中间层驱动开发在Win7系统下和Windows XP系统下的区别
http://bbs.pediy.com/showthread.php?t=137545原创 2013-09-08 00:36:26 · 1028 阅读 · 0 评论 -
驱动开发笔记(二)入门篇
学习驱动开发也有大半年时间了,刚好国庆也过完了,今天逛了下csdn博客,发现自己好久没写博客了,一时兴起想写点什么关于驱动的,因为我刚学驱动开发时对一些概念不清楚,可能是文档没讲清楚或是我理解错了,我觉得有必要把我自己理解的讲出来。这里我以文件过滤驱动为例。(此处我认为大家都看过楚狂人的驱动编程基础文档,如有理解错误的地方,请不吝指正)首先你要了解驱动对象和设备对象驱动对象(DRIVER_原创 2013-10-07 14:37:02 · 1069 阅读 · 0 评论 -
IO_STACK_LOCATION
如前文所述,nt内核的驱动模型没有完全使用函数调用栈,而是自己山寨出来一个IO_STACK_LOCATION,里面保存了驱动调用序列。我们知道函数调用栈的push和pop都是编译器帮忙弄的,你甚至都可以在完全不了解内幕的前提下写代码,但是驱动开发不一样,调用序列要你自己去关心,何时入栈,何时出栈,栈内保留的什么内容,全部都要照顾好,否则BSOD就在前方不远等你。与IO_STACK_LOCA转载 2013-10-19 00:32:50 · 3451 阅读 · 1 评论 -
驱动层主动发数据到应用层
上次转载的一片博客已经介绍了驱动层主动发送数据给应用层的方法,下面介绍的一种方法有点差异之处,上次的是在应用层创建事件对象,在驱动层创建MDL(内存描述符)来实现同步通信,而这次则是在应用层创建虚拟内存,驱动程序将虚拟地址转换成物理地址,然后再转成驱动程序能访问的虚拟地址,同样能达到内存共享的目的。驱动层部分代码switch (ioControlCode){ case 2001:原创 2013-11-20 15:44:37 · 4202 阅读 · 0 评论