Windows规定有些虚拟内存可以交换到文件中,这类内存被称为分页内存
有些虚拟内存 永远不会交换到文件中,这些内存叫非分页内存
定义分页标记
#define PAGEDCODE code_seg("PAGE"); // 分页内存,可以交换到文件中
定义非分页标记
#define LOCKEDCODE code_seg(); // 非分页内存,禁止交换到文件中
定义初始化内存块
#define INITCODE code_seg("INIT");
// 初始化的时候载入内存,然后可以从内存中卸载掉
#define PAGEDDATA data_seg("PAGE");
#define LOCKEDDATA data_seg();
#define INITDATA data_seg("INIT");
注:有一个特殊的函数DriverEntry需要放在INIT标志的内存中。INIT标志指明该函数只是在加载的需要载入内存,而当驱动程序成功加载后,该函数可以从内存中卸载掉。
--------------------------------------------------------
// 一般驱动入口都是 code_seg("INIT")
#pragma INITCODE
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
DriverObject->DriverUnload = DriverUnload;
KdPrint(("hello DriverEntry \r\n"));
return STATUS_SUCCESS;
}