MapViewOfFile3 関数 (memoryapi.h)
ファイルまたはページ ファイルでバックアップされたセクションのビューを、指定されたプロセスのアドレス空間にマップします。
構文
PVOID MapViewOfFile3(
[in] HANDLE FileMapping,
[in] HANDLE Process,
[in, optional] PVOID BaseAddress,
[in] ULONG64 Offset,
[in] SIZE_T ViewSize,
[in] ULONG AllocationType,
[in] ULONG PageProtection,
[in, out, optional] MEM_EXTENDED_PARAMETER *ExtendedParameters,
[in] ULONG ParameterCount
);
パラメーター
[in] FileMapping
HANDLE は、指定されたプロセスのアドレス空間にマップされるセクションに します。
[in] Process
HANDLE は、セクションがマップされるプロセスに します。
[in, optional] BaseAddress
ビューの目的のベース アドレス (アドレスは最も近い 64k 境界に切り捨てられます)。
このパラメーターが NULL
BaseAddress
[in] Offset
セクションの先頭からのオフセット。
AllocationType でMEM_LARGE_PAGESを使用する場合は、オフセットを 64k で整列するか、GetLargePageMinimum にアラインする必要があります。 さらに、AllocationType でMEM_REPLACE_PLACEHOLDERが使用されている場合、オフセットは VirtualAlloc2 によって付与される基になるページ サイズに合わせてページアラインする必要があります。
[in] ViewSize
マップするバイト数。 値 0 は、セクション全体をマップすることを指定します。
サイズは常にページ サイズの倍数である必要があります。
[in] AllocationType
メモリ割り当ての種類。 このパラメーターには、ゼロ (0) または次のいずれかの値を指定できます。
価値 | 意味 |
---|---|
|
予約済みビューをマップします。 |
|
プレースホルダーをマップされたビューに置き換えます。 サポートされているのは、データ/pf に基づくセクション ビューのみです (イメージや物理メモリなどはサポートされません)。 プレースホルダーを置き換える場合、BaseAddress と プレースホルダーをマップされたビューに置き換えた後、そのマップされたビューをプレースホルダーに解放するには、UnmapViewOfFileEx プレースホルダーは、予約済みメモリ領域の一種です。 このフラグが指定されている場合、Offset と BaseAddress の 64k アライメント要件は適用されません。 |
|
大きなページ ビューをマップします。 このフラグは、大きなページ サポートを使用してビュー オフセット の 64k アライメント要件は、このフラグが指定されている場合は適用されません。 |
[in] PageProtection
目的のページ保護。
SEC_IMAGE 属性を使用して作成されたファイル マッピング オブジェクトの場合、PageProtection パラメーターは無効であり、PAGE_READONLYなどの任意の有効な値に設定する必要があります。
[in, out, optional] ExtendedParameters
MEM_EXTENDED_PARAMETER型の 1 つ以上の拡張パラメーターへの省略可能なポインター。 これらの各拡張パラメーター値には、MemExtendedParameterAddressRequirements または MemExtendedParameterNumaNodeの Type フィールドを持つことができます。 拡張パラメーター
[in] ParameterCount
ExtendedParametersによって指される拡張パラメーターの数。
戻り値
マップされたビューのベース アドレスを返します (成功した場合)。 それ以外の場合は、NULL
備考
この API は、仮想アドレス空間の管理に関する特定の要件を持つ、高パフォーマンスのゲームとサーバー アプリケーションをサポートするのに役立ちます。 たとえば、以前に予約されたリージョンの上にメモリをマッピングする場合などです。これは、リング バッファーを自動的にラップする実装に役立ちます。 そして、特定のアライメントでメモリを割り当てる。たとえば、アプリケーションが大規模/巨大なページ マップ領域をオンデマンドでコミットできるようにします。
新しい割り当てにこの関数を使用すると、次のことができます。
- 仮想アドレス空間の範囲と 2 乗アライメント制限を指定する
- 任意の数の拡張パラメーターを指定する
- 物理メモリの優先 NUMA ノードを拡張パラメーターとして指定する
- プレースホルダー操作 (具体的には置換) を指定します。
NUMA ノードを指定するには、ExtendedParameters パラメーターを参照してください。
例
コード例については、「VirtualAlloc2のシナリオ 1」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 バージョン 1803 [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2016 [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | memoryapi.h (Windows.h を含む) |
ライブラリ | onecore.lib |
DLL | Kernel32.dll |
関連項目
VirtualAlloc2 の