在DISPATCH_LEVEL或更高LEVEL不能使用分页内存的根本原因

MSDN的文档只是说不能,但没有说清楚到底为啥。

微软的Doron在他的博客里提了一下,http://blogs.msdn.com/b/doronh/archive/2010/02/02/what-is-irql.aspx,但是还是没有说的太清楚。

其实使用分页内存的时候,如果访问Swap out的内存会触发0E号异常(KiTrap0E),会间接调用MmAccessFault。出于同步要求,他要求提升IRQL至APC_LEVEL。总之,缺页处理是在APC_LEVEL上处理的。

posted @ 2011-12-08 23:48  Fan Zhang  阅读(585)  评论(0编辑  收藏  举报