MapViewOfFileFromApp 関数 (memoryapi.h)
ファイル マッピングのビューを、呼び出し元の Windows ストア アプリのアドレス空間にマップします。
構文
PVOID MapViewOfFileFromApp(
[in] HANDLE hFileMappingObject,
[in] ULONG DesiredAccess,
[in] ULONG64 FileOffset,
[in] SIZE_T NumberOfBytesToMap
);
パラメーター
[in] hFileMappingObject
ファイル マッピング オブジェクトへのハンドル。 CreateFileMappingFromApp 関数は、このハンドルを返します。
[in] DesiredAccess
ページのページ保護を決定するファイル マッピング オブジェクトへのアクセスの種類。 このパラメーターには、次のいずれかの値、または必要に応じて複数の値のビットごとの OR の組み合わせを指定できます。
ビットごとの OR を使用すると、上記の値とこれらの値を組み合わせることができます。
値 | 意味 |
---|---|
|
ファイルの書き込み時のコピー ビューがマップされます。 ファイル マッピング オブジェクトは、 PAGE_READONLY、PAGE_READ_EXECUTE、 PAGE_WRITECOPY、または PAGE_READWRITE保護を使用 して 作成されている必要があります。
プロセスが書き込み時のコピー ページに書き込むと、元のページが、プロセスにプライベートな新しいページにコピーされます。 新しいページはページング ファイルによってサポートされます。 新しいページの保護は、書き込み時のコピーから読み取り/書き込みに変わります。 書き込み時のコピー アクセスを指定すると、呼び出し元のプロセスがビュー内のすべてのページに書き込み、すべてのページをプライベートにできるため、システムとプロセスのコミット料金はビュー全体に対して行われます。 新しいページの内容は元のファイルに書き戻されることはなく、ビューがマップ解除されると失われます。 |
|
バージョン 1703 Windows 10以降、このフラグは、大きなページのサポートを使用してビューをマップする必要があることを指定します。 ビューのサイズは 、GetLargePageMinimum 関数によって報告される大きなページのサイズの倍数である必要があり、ファイル マッピング オブジェクトは SEC_LARGE_PAGES オプションを使用して作成されている必要があります。 lpBaseAddress に null 以外の値を指定する場合、値は GetLargePageMinimum の倍数である必要があります。 |
|
マップされたファイル内のすべての場所を、制御フロー ガード (CFG) の無効なターゲットとして設定します。 このフラグは 、PAGE_TARGETS_INVALIDに似ています。 このフラグは、アクセス実行権限 FILE_MAP_EXECUTEと組み合わせて使用します。 これらのページ内の場所に対する間接呼び出しは CFG チェックに失敗し、プロセスは終了します。 割り当てられた実行可能ページの既定の動作は、CFG の有効な呼び出しターゲットとしてマークされます。 |
SEC_IMAGE属性を使用して作成されたファイル マッピング オブジェクトの場合、dwDesiredAccess パラメーターは無効であり、FILE_MAP_READなどの有効な値に設定する必要があります。
ファイル マッピング オブジェクトへのアクセスの詳細については、「 ファイル マッピング のセキュリティとアクセス権」を参照してください。
[in] FileOffset
ビューを開始するファイル オフセット。 オフセットは、ファイル マッピング内のオフセットを指定する必要があります。 また、システムのメモリ割り当て粒度と一致する必要があります。 つまり、オフセットは割り当て粒度の倍数である必要があります。 システムのメモリ割り当て粒度を取得するには、 GetSystemInfo 関数を使用します。この関数は、 SYSTEM_INFO 構造体のメンバーを格納します。
[in] NumberOfBytesToMap
ビューにマップするファイル マッピングのバイト数。 すべてのバイトは、 CreateFileMappingFromApp で指定された最大サイズ内にある必要があります。 このパラメーターが 0 (ゼロ) の場合、マッピングは指定されたオフセットからファイル マッピングの末尾まで拡張されます。
戻り値
関数が成功した場合、戻り値はマップされたビューの開始アドレスです。
関数が失敗した場合は、返される値は NULL です。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
1 つの重要な例外では、同じファイルによってサポートされるファイル マッピング オブジェクトから派生したファイル ビューは、特定の時点で一貫しているか同一です。 一貫性は、プロセス内のビューと、異なるプロセスによってマップされるビューに対して保証されます。
例外はリモート ファイルに関連しています。 MapViewOfFileFromApp はリモート ファイルで動作しますが、一貫性を保つものではありません。 たとえば、2 台のコンピューターがファイルを書き込み可能としてマップし、両方とも同じページを変更した場合、各コンピューターにはページへの独自の書き込みのみが表示されます。 ディスク上のデータが更新されると、マージされません。
実行可能な保護は、アプリに codeGeneration 機能がある場合にのみ正常に要求できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2012 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | memoryapi.h (Windows.h を含む) |
Library | onecore.lib |
[DLL] | Kernel32.dll |