MapViewOfFile

呼び出しプロセスのアドレス空間にファイルマッピングオブジェクトのビューをマッピングします。

ベースアドレスを指定するには、 MapViewOfFileEx 関数を使います。

PVOID MapViewOfFile(
    HANDLE hMappingObject,     // マッピングオブジェクトのハンドル
    DWORD  dwDesiredAccess,    // データのアクセス方法
    DWORD  dwFileOffsetHigh,   // オフセットの上位32ビット
    DWORD  dwFileOffsetLow,    // オフセットの下位32ビット
    SIZE_T dwNumberOfByteToMap // マッピングをするバイト数
);

KERNEL32.DLL

引数

hMappingObject

ファイルマッピングオブジェクトのハンドルを指定します。このハンドルは CreateFileMapping 関数または OpenFileMapping 関数によって返されます。

dwDesiredAccess

データへのアクセスのタイプを指定します。以下の値のいずれかになります。

意味
0x00000001 (FILE_MAP_COPY) コピーオンライトアクセス

hMappingObject パラメータで指定されるファイルマッピングオブジェクトが PAGE_WRITECOPY 保護属性を指定して作成され、かつ、このフラグを指定した場合は、このビューに書き込みをすると、ページが自動的にスワップされて、オリジナルのデータファイルは変更されません。

Windows 95/98/Me: ファイルマッピングオブジェクトが PAGE_WRITECOPY 保護属性を持っていない場合には、この関数はエラーを返します。

1つのマッピングオブジェクトを複数のプロセス間で共有している場合には、あるプロセスのビューに書き込みを行なうと、他のプロセスのビューにも反映されます。オリジナルファイルのデータは変化しません。

Windows NT/2000/XP: ファイルマッピングオブジェクトの保護属性の制限はありません。コピーオンライトアクセスの指定は、どの保護属性を持つビューに対しても有効です。

1つのマッピングオブジェクトを複数のプロセス間で共有している場合に、あるプロセスのビューに書き込みを行なっても、他のプロセスのビューは変更されません。オリジナルファイルのデータは変化しません。

0x00000002 (FILE_MAP_WRITE) 読み書きアクセス

hMappingObject パラメータで指定されるファイルマッピングオブジェクトは PAGE_READWRITE 保護属性を指定して作成されたものでなければなりません。

0x00000004 (FILE_MAP_READ) 読み込み専用アクセス

hMappingObject パラメータで指定されるファイルマッピングオブジェクトは PAGE_READWRITE または PAGE_READONLY 保護属性を指定して作成されたものでなければなりません。

0x000F001F (FILE_MAP_ALL_ACCESS) FILE_MAP_WRITE と同じ
dwFileOffsetHigh

マッピング開始オフセットの上位32ビットを指定します。

dwFileOffsetLow

マッピング開始オフセットの下位32ビットを指定します。オフセットは割り当て単位の倍数でなければなりません。割り当て単位を取得するには GetSystemInfo 関数によって取得される SYSTEM_INFO 構造体の dwAllocationGranularity メンバを参照します。

dwNumberOfByteToMap

マップするファイルのサイズをバイト単位で指定します。 0 を指定すると、マッピングオブジェクト全体が指定されます。

戻り値

成功すると、マッピングされたビューの開始アドレスが返ります。

失敗すると 0 (NULL) が返ります。拡張エラー情報を取得するには、 GetLastError 関数を使います。

解説

単一のファイルマッピングオブジェクトからマッピングされる複数のビューでは、一貫性(コヒーレンシ)が保証されます。

ReadFile 関数や WriteFile などでアクセスされるファイルに対しては、そのマッピングされたビューの一貫性は保証されません。

対応情報

Windows 95 以降 / Windows NT 3.1 以降