ZwFlushVirtualMemory 関数 (ntifs.h)
ZwFlushVirtualMemory ルーチンは、指定されたプロセスの仮想アドレス空間内の仮想アドレスの範囲をフラッシュします。これにより、データ ファイルにマップされ、変更された場合はデータ ファイルに戻されます。
構文
NTSYSAPI NTSTATUS ZwFlushVirtualMemory(
[in] HANDLE ProcessHandle,
[in, out] PVOID *BaseAddress,
[in, out] PSIZE_T RegionSize,
[out] PIO_STATUS_BLOCK IoStatus
);
パラメーター
[in] ProcessHandle
フラッシュするページのコンテキストが存在するプロセスのオープン ハンドル。 Ntddk.h で定義されている NtCurrentProcess マクロを使用して、現在のプロセスを指定します。
[in, out] BaseAddress
仮想アドレス範囲のベース アドレスへのポインター。
エントリ時に、このパラメーターは、フラッシュするページの領域のベース アドレスの初期値へのポインターを指定します。
戻り値の場合、このパラメーターは、フラッシュされたリージョンのベース アドレスを受け取る変数へのポインターを提供します。
[in, out] RegionSize
仮想アドレス範囲のサイズ (バイト単位)。
入力時に、このパラメーターは、ディスクにフラッシュするページ領域のサイズの初期値 (バイト単位) へのポインターを指定します。 この引数は、 ZwFlushVirtualMemory によって次のホスト ページ サイズ境界に切り上げられます。 この値を 0 に指定すると、ベース アドレスから範囲の末尾までのマップされた範囲がフラッシュされます。
戻り値の場合、このパラメーターは、フラッシュされたページ領域の実際のサイズをバイト単位で受け取る変数へのポインターを指定します。
[out] IoStatus
IO_STATUS_BLOCK構造体へのポインター。 この構造体は、最後に試行された I/O 操作の I/O 状態の値が出力に格納される場所です。
戻り値
ZwFlushVirtualMemory は、STATUS_SUCCESSまたはエラー状態コードを返します。 考えられるエラー状態コードは次のとおりです。
リターン コード | 説明 |
---|---|
STATUS_ACCESS_DENIED | 指定された ProcessHandle パラメーターが有効なプロセス ハンドルではありません。 |
STATUS_INSUFFICIENT_RESOURCES | この関数に必要な追加のリソースは使用できませんでした。 |
STATUS_INVALID_PARAMETER_2 | 指定された BaseAddress が仮想アドレス空間内の無効なアドレスであるか、 RegionSize が無効でした。 |
STATUS_INVALID_HANDLE | 指定された ProcessHandle パラメーターが有効なプロセス ハンドルではありません。 |
STATUS_NOT_MAPPED_VIEW | 指定された BaseAddress に対して仮想アドレス空間記述子を見つけることができません。 |
STATUS_PROCESS_IS_TERMINATING | プロセスと関連付けられている仮想アドレス空間が削除されました。 |
STATUS_FILE_LOCK_CONFLICT | ファイル システムでロックの競合が発生しました。 |
注釈
このルーチンは、データ ファイルをマップする仮想メモリ内のアドレスの範囲を入力パラメーターとして受け取ります。 ファイルがメモリにコピーされてから、この範囲内のメモリが変更された場合、ルーチンはこのメモリをデータ ファイルにフラッシュし直します。
カーネル モード ドライバーのメモリ管理のサポートの詳細については、「 Windows ドライバーのメモリ管理」を参照してください。
注意
ZwFlushVirtualMemory 関数の呼び出しがユーザー モードで行われる場合は、"ZwFlushVirtualMemory" ではなく "NtFlushVirtualMemory" という名前を使用する必要があります。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h (Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |