RtlFillNonVolatileMemory 函数 (ntddk.h)
例程 RtlFillNonVolatileMemory 使用给定值填充非易失性目标缓冲区。
语法
NTSYSAPI NTSTATUS RtlFillNonVolatileMemory(
PVOID NvToken,
VOID *NvDestination,
SIZE_T Size,
const UCHAR Value,
ULONG Flags
);
参数
NvToken
指向不透明结构的指针,该结构包含 有关 RtlGetNonVolatileToken 已返回的非易失性内存区域的详细信息。
NvDestination
指向非易失性目标缓冲区的指针。
Size
指定填充操作的长度(以字节为单位)。
Value
包含用于填充目标缓冲区的值的 UCHAR。
Flags
ULONG 类型的值,包含以下一个或多个标志:
Flags | 含义 |
---|---|
FILL_NV_MEMORY_FLAG_FLUSH | 设置提供的值,然后刷新目标范围。 除非指定了FILL_NV_MEMORY_FLAG_NO_DRAIN,否则刷新后跟排水。 此标志可确保即使在系统断电的情况下,数据也是持久的。 |
FILL_NV_MEMORY_FLAG_NON_TEMPORAL | 如果可用,请执行非临时 memset。 非临时意味着不需要数据缓存。 如果处理器不支持对小于地址总线大小的范围执行非临时操作,请执行常规 memset,然后执行刷新和排出。 如果处理器完全忽略非临时移动,RtlSetNonVolatileMemory 不会将其替换为刷新和排出。 但是,如果 Windows 没有给定体系结构的实现, (ARM64) ,请将其替换为刷新和排出。 |
FILL_NV_MEMORY_FLAG_PERSIST | 确保通过刷新或使用非临时移动来持久保存 memset。 通常,系统使用成本最低的方法来保存数据。 此标志可确保即使在系统断电的情况下数据也持久。 指定FILL_NV_MEMORY_FLAG_PERSIST时忽略。 |
FILL_NV_MEMORY_FLAG_NO_DRAIN | 告知例程不要等待刷新完成。 必须与 FILL_NV_MEMORY_FLAG_FLUSH 一起指定,且不FILL_NV_MEMORY_FLAG_PERSIST或FILL_NV_MEMORY_FLAG_NON_TEMPORAL。 |
返回值
例程返回状态代码之一:
返回代码 | 说明 |
---|---|
|
NvToken 是无效的指针或标记。 |
|
请求已成功。 |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 版本 1903 |
标头 | ntddk.h |
IRQL | DPC_LEVEL |