代码:
#pragma once
#ifdef __cplusplus
extern "C"
{
#endif
#include <NTDDK.h>
#ifdef __cplusplus
}
#endif
#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")
#include "Driver.h"
PWCHAR Log2 = L"Log2";
#pragma INITCODE
extern "C" NTSTATUS DriverEntry (
IN PDRIVER_OBJECT pDriverObject,
IN PUNICODE_STRING pRegistryPath )
{
UNREFERENCED_PARAMETER(pDriverObject);
UNREFERENCED_PARAMETER(pRegistryPath);
KdPrint(("Log1\n")); // 字符串存储在,INIT 段中
KdPrint(("%S\n", Log2)); // 字符串存储在,DATA 段中
return STATUS_SUCCESS;
}
说明:
因此,若 DriverEntry 初始化完成,被卸载后,INIT 内的字符串也失效了。
因此,若 DriverEntry 初始化完成,被卸载后,INIT 内的字符串也失效了。