次の方法で共有


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 バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxxZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt および Zw バージョンの使用 を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP
ターゲット プラットフォーム の 万国
ヘッダー ntifs.h (Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

関連項目

ZwAllocateVirtualMemory