次の方法で共有


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と組み合わせて指定する必要があります。

戻り値

ルーチンは、次のいずれかの状態コードを返します。

リターン コード 説明
STATUS_INVALID_PARAMETER
NvToken は無効なポインターまたはトークンです。
STATUS_SUCCESS
要求は成功しました。

要件

要件
サポートされている最小のクライアント Windows 10 バージョン 1903
Header ntddk.h
IRQL DPC_LEVEL