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
次のフラグの 1 つ以上を含む ULONG 型の値。
Flags | 意味 |
---|---|
FILL_NV_MEMORY_FLAG_FLUSH | 指定した値を設定し、宛先範囲をフラッシュします。 FILL_NV_MEMORY_FLAG_NO_DRAINが指定されていない限り、フラッシュの後にドレインが続きます。 このフラグにより、システムの電源が失われた場合でもデータの持続性が確保されます。 |
FILL_NV_MEMORY_FLAG_NON_TEMPORAL | 使用可能な場合は、非テンポラル memset を実行します。 非テンポラルとは、データ キャッシュが不要であることを意味します。 アドレス バス サイズより小さい範囲に対してプロセッサが非テンポラル操作をサポートしていない場合は、通常の memset の後に flush と drain を実行します。 プロセッサが非テンポラル移動を完全に無視した場合、RtlSetNonVolatileMemory はフラッシュとドレインに置き換えません。 ただし、Windows に特定のアーキテクチャ (ARM64 など) の実装がない場合は、フラッシュとドレインに置き換えます。 |
FILL_NV_MEMORY_FLAG_PERSIST | memset がフラッシュまたは非テンポラル移動を使用して保持されていることを確認します。 通常、システムは、データを保持するために最もコストのかからないアプローチを使用します。 このフラグを設定すると、システムの電源が失われた場合でもデータの持続性が保証されます。 FILL_NV_MEMORY_FLAG_PERSISTが指定されている場合は無視されます。 |
FILL_NV_MEMORY_FLAG_NO_DRAIN | フラッシュが完了するまで待機しないようにルーチンに指示します。 FILL_NV_MEMORY_FLAG_PERSISTまたはFILL_NV_MEMORY_FLAG_NON_TEMPORALを使用せずに、FILL_NV_MEMORY_FLAG_FLUSHと組み合わせて指定する必要があります。 |
戻り値
ルーチンは、次のいずれかの状態コードを返します。
リターン コード | 説明 |
---|---|
|
NvToken は無効なポインターまたはトークンです。 |
|
要求は成功しました。 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 バージョン 1903 |
Header | ntddk.h |
IRQL | DPC_LEVEL |