#pragma 预处理指令
#Pragma 用法很多,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。
#pragma alloc_text(PAGE,<funcName>);
编译时控制分页能力
有 时,驱动程序的某些部分必须驻留内存而另一些可以被分页,这就需要一种能控制代码和数据是否分页的方法。通过指导编译器的段分配可以实现这个目的。在运行 时,装入器通过检查驱动程序中的段名把段放到你指定的内存池中。此外在运行时调用内存管理器的例程也能实现这个目的。
Win32 执行文件,包括内核模式驱动程序,在内部都是由一个或多个段组合而成。段可以包含代码或数据,通常还会有诸如可读性、可写性、共享性、执行性,等等附加属 性。段是指定分页能力的最小单元。当装载一个驱动程序映像时,操作系统把以“page”或“.eda(.edata)”为段名开头的段放到分页池中,除非 HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management中的DisablePagingExecutive值被设置(在这种情况下,驱动程序占用的内存不被分页)。
#Pragma message(“消息文本”)
当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。
有 时,驱动程序的某些部分必须驻留内存而另一些可以被分页,这就需要一种能控制代码和数据是否分页的方法。通过指导编译器的段分配可以实现这个目的。在运行 时,装入器通过检查驱动程序中的段名把段放到你指定的内存池中。此外在运行时调用内存管理器的例程也能实现这个目的。
Win32 执行文件,包括内核模式驱动程序,在内部都是由一个或多个段组合而成。段可以包含代码或数据,通常还会有诸如可读性、可写性、共享性、执行性,等等附加属 性。段是指定分页能力的最小单元。当装载一个驱动程序映像时,操作系统把以“page”或“.eda(.edata)”为段名开头的段放到分页池中,除非 HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management中的DisablePagingExecutive值被设置(在这种情况下,驱动程序占用的内存不被分页)。
#Pragma message(“消息文本”)
当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来。