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 |
ターゲット プラットフォーム の |
万国 |
ヘッダー | ntifs.h (Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |