MapViewOfFile

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

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

PVOID MapViewOfFile(
    HANDLE hMappingObject,     // mapping object handle
    DWORD  dwDesiredAccess,    // access type
    DWORD  dwFileOffsetHigh,   // high-order of offset
    DWORD  dwFileOffsetLow,    // low-order of offset
    SIZE_T dwNumberOfByteToMap // number of bytes
);

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関数を使います。

解説

ビューのサイズを取得するには、VirtualQuery関数を使います。

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

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

対応情報

Windows 95 以降 / Windows NT 3.1 以降