关于 驱动 初始化内存块标记("INIT") 的说明

代码:

#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 内的字符串也失效了。

发布了7 篇原创文章 · 获赞 0 · 访问量 32

猜你喜欢

转载自blog.csdn.net/songbei6/article/details/105233990