摘要: 一、IRP MdlAddress(PMDL)域指向一个内存描述符表(MDL),该表描述了一个与该请求关联的用户模式缓冲区。如果顶级设备对象的Flags域为DO_DIRECT_IO,则I/O管理器为IRP_MJ_READ或IRP_MJ_WRITE请求创建这个MDL。如果一个IRP_MJ_DEVICE_CONTROL请求的控制代码指定METHOD_IN_DIRECT或METHOD_OUT_DIRECT... 阅读全文
posted @ 2011-01-04 23:36 浪里飞 阅读(2007) 评论(0) 推荐(0) 编辑
摘要: 关于同步 执行在某线程上下文中的代码在任何时刻都可能被系统夺去控制权。另外,只有在多处理器的计算机上才能真正实现多线程的并发执行。Windows NT为解决一般的同步问题提供了两种方法,一个是中断请求优先级(IRQL)方案,另一个是在关键代码段周围声明和释放自旋锁。IRQL可以避免在单 CPU上的破坏性抢先,而自旋锁可以防止多CPU间的干扰。 图示. 中断请求级 在DISPATCH_LEVEL... 阅读全文
posted @ 2011-01-04 21:05 浪里飞 阅读(1975) 评论(0) 推荐(0) 编辑
摘要: 内存管理 1)内核模式与用户模式地址 图示 地址空间中用户模式部分和内核模式部分 每个用户模式进程都有自己的地址上下文,它把用户模式的虚拟地址映射成一组唯一的物理页帧。这意味着,当Windows NT调度器把控制从一个进程的当前线程切换到另一个进程的某个线程时,与进程相对应的虚拟地址空间也被更换。线程切换的一个步骤就是改变处理器当前使用的页表,以便它能引用新线程的进程上下文。 在编写驱动程序... 阅读全文
posted @ 2011-01-04 14:35 浪里飞 阅读(3480) 评论(1) 推荐(0) 编辑
摘要: 1、Summary of Kernel-Mode Support Routines http://msdn.microsoft.com/en-us/library/ff563889%28VS.85%29.aspx 决不在内核模式服务函数的参数中使用带有侧效的表达式。 2、异常 对用户模式虚拟内存直接引用的代码段应该用结构化异常帧保护起来。这样的引用通常发生在调用MmProbeAndLockPag... 阅读全文
posted @ 2011-01-04 14:19 浪里飞 阅读(1174) 评论(0) 推荐(0) 编辑