内存与非分页内存
摘要:默认情况下,内核加载器会加载所有的代码部分和全局数据到非分页内存中。而且,加载器是一次加载整个驱动的可执行文件,包括相关的DLL。加载后,内核加载器关闭驱动程序文件,甚至你可以删除当前正在执行的驱动文件。但是,你可以告诉加载器你希望驱动的哪部分是可分页,所谓可分页,就是可能会被换页出内存(Pageout)。可以使用下面的指令来实现:#defineALLOC_PRAGMA#pragmaalloc_text(PAGE,function_name1)#pragmaalloc_text(PAGE,function_name2)#endif由function_namex指定的函数代码将被放置于可分页内存中。使数据段可分页,使用下面的编译指令:#ifdefALLOC_PRAGMA#pragmadata_seg(PAGE)//defineyourpageebledatasectionmodulehere.#pragmadata_seg()要注意,绝不能让可能在高的IRQL级别被调用的例程被换出页面。可以调用MmLockPageableCodeSection和MmLockPageableCodeSectionByHandle来锁定被标志为可分页的代码段。可以调用MmLockPageableDataSection和MmLockPageableDataSectionByHandle来锁定被标志为可分页的数据段可以调用MmUnlockPageableImageSection来解除被上面列出的函数锁定的代码或数据段。可以调用MmPageEntireDriver使整个驱动程序可分
温馨提示:当前文档最多只能预览
5 页,若文档总页数超出了
5 页,请下载原文档以浏览全部内容。
本文档由 匿名用户 于 2022-09-02 23:19:15上传分享