杂乱无章
摘要: 为什么要用IO_REMOVE_LOCK?
WDM 驱动程序在处理设备删除 IRP 并释放驱动程序分配的内存后可能接收到附加的 IRP。在处理附加的 IRP 时试图引用已经释放的内存会导致系统崩溃。驱动程序能够接收已删除设备的 IRP,这有两个原因:
在设备被删除后,另一个组件可以发送 I/O。
在设备删除请求之前发送的 I/O 请求可能在目标驱动程序处理设备删除请求之后到达。
阅读全文
摘要: 声明:本文所描述的所有资料和源码均搜集自互联网,版权归原始作者所有,所以在引用资料时我尽量注明原始作者和出处;本文所搜集资料也仅供同学们学习之用,由于用作其他用途引起的责任纠纷,本人不负任何责任。(本资料由代码疯子整理,欢迎访问http://www.programlife.net/)
阅读全文
摘要: 什么是第一轮异常?
(1)当一个程序被调试的时候,如果有异常发生调试器会得到通知,这个时候,被调试的应用程序将会被挂起并且调试器决定如何来处理这个异常。当一个异常第一次经过这种机制就是所谓的“第一轮异常”。根据调试器的设置,调试器可能会忽略这个异常并让程序继续执行,或者保持被调试程序的挂起状态并进入调试模式。
如果应用程序无法处理这个异常,调试器会再次得到通知,这个就是所谓的“Second Chance Exception”(第二轮异常)了。同样调试器会再次挂起被调试程序并决定如何来处理这个异常。通常情况下,当第二轮异常发生的时候,调试器都被配置为进入调试模式,来允许用户进行调试。
阅读全文
摘要: (本文最初发表于程序人生 >> Copy On Write(写时复制) 作者:代码疯子)
Copy On Write(写时复制)是在编程中比较常见的一个技术,面试中也会偶尔出现(好像Java中就经常有字符串写时复制的笔试题),今天在看《More Effective C++》的引用计数时就讲到了Copy On Write——写时复制。下面简单介绍下Copy On Write(写时复制),我们假设STL中的string支持写时复制(只是假设,具体未经考证,这里以Mircosoft Visual Studio 6.0为例,如果有兴趣,可以自己翻阅源码)
Copy On Write(写时复制)的原理是什么?
有一定经验的程序员应该都知道Copy On Write(写时复制)使用了
阅读全文
摘要: (本文最初发表于程序人生 >> Member Function Templates(成员函数模板) 作者:代码疯子)
Member Function Templates翻译成中文就是成员函数模板,这个东西我个人见得少,最初是在STL的auto_ptr源代码里面看到的,当时候也不是很明白;这几天又翻了翻《More Effective C++》,正好看到上面介绍的比较详细,就找了点资料总结一下。
为了更好的说明问题,我们自己定义一个Smart Pointer(智能指针,这里只是示例,所以定义是不完整和不完善的),假设现在我们手上有这样三个类:MusicProduct、CD、MP3,类之间的关系图如下:
阅读全文
友情链接: