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 |
---|---|
|
NvToken 是無效的指標或令牌。 |
|
要求成功。 |
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 (版本 1903) |
標頭 | ntddk.h |
IRQL | DPC_LEVEL |