共用方式為


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。

傳回值

例程會傳回其中一個狀態代碼:

傳回碼 Description
STATUS_INVALID_PARAMETER
NvToken 是無效的指標或令牌。
STATUS_SUCCESS
要求成功。

規格需求

需求
最低支援的用戶端 Windows 10 (版本 1903)
標頭 ntddk.h
IRQL DPC_LEVEL