摘要:
这个模块主要是实现加载/卸载Windows内核驱动程序(不是硬件驱动), 属于软件驱动, 也就是是在软件启动的时候加载驱动, 在软件退出的时候卸载驱动程序. 刚开始学驱动时问题用SrvInst.exe, 感觉不太方便, 不能随程序的启动,退出, 自动加载与卸载, 所以写成了这个模块, 这下方便好多了. BUG:关于加载多个驱动程序那里的计数器, 还未做测试, 不知道能否正常工作. 有时候在卸载驱动程序会遇到"驱动程序已标记为删除"的错误消息, 这个还未解决. 貌似这种情况多发生在应用程序完全释放其所打开的资料所致. 比如:1)加载驱动; 2)打开设备 3)关闭设备 4)卸载 阅读全文
摘要:
<<寒江独钓>>中第3章的串口过滤只实现了对写操作的过滤, 没有实现对读操作的过滤, 这里, 我改进了一下, 去掉了原来对所有串口的过滤, 改成了只对指定的串口过滤; 增加了同时对读操作的过滤,其实主要就是调用IoSetCompletionRoutine设置完成回调函数. 源代码: #include <ntddk.h>#include <ntstrsafe.h>/**********************************************************文件名称:comdrv.c文件路径:./comdrv/comdrv.c 阅读全文
摘要:
这篇文章是讲WDK中的LIST_ENTRY的遍历的, 前一篇文章(对WDK中对LIST_ENTRY的操作的相关函数的实现及简单运用)是讲的实现方式. 都已经实现了,遍历当然已经不是问题了. //list_entry.c#include <ntddk.h>/**********************************************************文件名称:list_entry.c文件路径:./list_entry/list_entry.c创建时间:2013-2-4,22:49:43文件作者:女孩不哭文件说明:该文件实现对WDK中LIST_ENTRY双向链表的 阅读全文
摘要:
这篇文章主要是描述WDK中对LIST_ENTRY双向链表的操作的相关函数(不包含原子操作)的实现以及使用范例. 代码中我用一个结构体+函数指针的方式把函数给包裹了一下,看不惯的可以直接调用原函数即可. 如果不懂CONTAINING_RECORD,参见:我对CONTAINING_RECORD宏的详细解释(http://www.cnblogs.com/nbsofer/archive/2013/01/07/2849913.html) 关键词:WDK,LIST_ENTRY,CONTAINING_RECORD 2013-07-14 更新:加入了list_remove函数,实现移除双向链表中的... 阅读全文