10 2011 档案

摘要:当阅读过滤驱动代码自己实践时,我想法是绑定完卷设备后,把所有的IRP都原封不动向下发,只是在passthru中打印个信息,表示经过了我的驱动,想看下效果。 用DeviceTree查看,已成功绑定了D盘这个分区。用Dbgview查看,也能查看到输出信息。但是,绑定的D盘中,除了txt文件外,无法打开文件或运行程序,无法查看文件信息(创建日期,大小等),当一进行上述操作时,就BSOD,显示错误码: STOP:0x0000008E(0xC0000005,0x8057D74B,0xF54C7C30,0x00000000)0xC0000005表示内存访问违规,如使用了野指针,或指针未初始化即使用等。用W 阅读全文
posted @ 2011-10-24 09:09 onemuji 阅读(533) 评论(0) 推荐(0)
摘要:IRQL是Interrupt ReQuest Level,中断请求级别。 一个由windows虚拟出来的概念,划分在windows下中断的优先级,这里中断包括了硬中断和软中断,硬中断是由硬件产生,而软中断则是完全虚拟出来的。 处理器在一个IRQL上执行线程代码。IRQL用于帮助决定线程如何被中断的。 阅读全文
posted @ 2011-10-20 11:54 onemuji 阅读(523) 评论(0) 推荐(1)
摘要:While processing an IRP_MJ_CREATE a filter may need to open the file with different attributes/rights, etc. This is often done by using a second call 阅读全文
posted @ 2011-10-12 22:23 onemuji 阅读(831) 评论(0) 推荐(0)
摘要:我们从 UNREFERENCED_PARAMETER 开始吧。这个宏在 winnt.h 中定义如下:#define UNREFERENCED_PARAMETER(P) (P) 换句话说 UNREFERENCED_PARAMETER 展开传递的参数或表达式。其目的是避免编译器关于未引用参数的警告。许多程序员,包括我在内,喜欢用最高级别的警告 Level 4(/W4)进行编译。Level 4 属于“能被安全忽略的事件”的范畴。虽然它们可能使你难堪,但很少破坏你的代码。例如,在你的程序中可能会有这样一些代码行:int x=1; 但你从没用到过 x。也许这一行是你以前使用 x 时留下来的,只删除了.. 阅读全文
posted @ 2011-10-12 21:17 onemuji 阅读(167) 评论(0) 推荐(0)
摘要:原始来源不详 整理自:http://topic.csdn.net/u/20101213/23/76e10ff4-23fb-43a7-8c71-ed42796e58cd.htmlC++各大有名库的介绍在C++中,库的地位是非常高的。C++之父 Bjarne Stroustrup先生多次表示了设计库来扩充功能要好过设计更多的语法的言论。现实中,C++的库门类繁多,解决的问题也是极其广泛,库从轻量级到重量级的都有。不少都是让人眼界大开,亦或是望而生叹的思维杰作。由于库的数量非常庞大,而且限于笔者水平,其中很多并不了解。所以文中所提的一些库都是比较著名的大型库。1、C++标准库已被实践证明为有工业级别 阅读全文
posted @ 2011-10-10 23:33 onemuji 阅读(262) 评论(0) 推荐(0)
摘要:转自:http://hi.baidu.com/combojiang/blog/item/3afc83eec53e05fdb2fb95a2.html异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助。1) APCs允许用户程序和系统元件在一个进程的地址空间内某个线程的上下文中执行代码。2) I/O管理器使用APCs来完成一个线程发起的异步的I/O操作。例如:当一个设备驱动调用IoCompleteRequest来通知I/O管理器,它已经结束处理一个异步I/O请求时,I/O管理器排队一个apc到发起请求的线程。然后线程在一 阅读全文
posted @ 2011-10-10 16:30 onemuji 阅读(545) 评论(0) 推荐(0)