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 类型的值:

标志 意义
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。

返回值

例程返回状态代码之一:

返回代码 描述
STATUS_INVALID_PARAMETER
NvToken 是无效的指针或令牌。
STATUS_SUCCESS
请求成功。

要求

要求 价值
最低支持的客户端 Windows 10 版本 1903
标头 ntddk.h
IRQL DPC_LEVEL