<Return[MN]><Top>

MapViewOfFile

Declare Function Api_MapViewOfFile& Lib "kernel32" Alias "MapViewOfFile" (ByVal hFileMappingObject&, ByVal dwDesiredAccess&, ByVal dwFileOffsetHigh&, ByVal dwFileOffsetLow&, ByVal dwNumberOfBytesToMap&)

Declare Function MapViewOfFile Lib "kernel32" Alias "MapViewOfFile" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) As Long

呼び出し側プロセスのアドレス空間に、ファイルのビューをマップする。
推奨されるベースアドレスを指定するには、MapViewOfFileEx 関数を使う。

パラメータ
hFileMappingObject
    開いているファイルマッピングオブジェクトのハンドルを指定する。

    CreateFileMapping と OpenFileMapping の各関数がこのハンドルを返す。
dwDesiredAccess
    ファイルビューへのアクセスタイプ、つまりそのファイルへマップされているページの保護タイプを指定する。

    次の値のいずれかを指定する。

    値                                     

意味                                                            

    FILE_MAP_WRITE

 

読み書きアクセスである。hFileMappingObject パラメータで指定するオブジェクトは、PAGE_READWRITE

の保護を指定して作成したものでなければならない。ファイルの読み書き可能ビューがマップされる。

    FILE_MAP_READ

 

 

読み取り専用アクセスである。hFileMappingObject パラメータで指定するオブジェクトは、

PAGE_READWRITE または PAGE_READONLY の保護を指定して作成したものでなければならない。

ファイルの読み取り専用ビューがマップされる。

    FILE_MAP_ALL_ACCESS

FILE_MAP_WRITE と同じである。

    FILE_MAP_COPY

 

 

 

 

 

 

 

 

 

 

 

コピーへの読み書きアクセスである。PAGE_WRITECOPY アクセスを指定してマップを作成し、

FILE_MAP_COPY の保護を指定してビューを作成すると、ファイルに対する 1 つのビューを受け取る。

そのビューへの書き込みを行うと、ページは自動的にスワップ可能になり、その後に加えた変更は元のディス

クファイルに書き込まれない。
Windows 95:CreateFileMapping 関数で PAGE_WRITECOPY を指定しなければならない。

それ以外の場合、エラーが発生する。
DuplicateHandle または OpenFileMapping を使って複数のプロセスで 1 つのマッピングを共有している場

合、1 つのプロセスがビューへの書き込みを行うと、その変更は他のプロセスへも伝達される。元のファイル

は変化しない。
Windows NT/2000:hFileMappingObject パラメータで指定するオブジェクトの作成方法に制約はない。

ビューのタイプがどのようなものであっても、コピーへの書き込みだけが有効である。
DuplicateHandle または OpenFileMapping を使って複数のプロセスで 1 つのマッピングを共有している場

合、1 つのプロセスがビューへの書き込みを行っても、その変更は他のプロセスへは伝達されない。

元のファイルは変化しない。

dwFileOffsetHigh
    マッピングを開始するファイルのオフセットの上位(high-order)DWORD を指定する。
dwFileOffsetLow
    マッピングを開始するファイルのオフセットの下位(low-order)DWORD を指定する。

    上位と下位の組み合わせによって形成される組み合わせで、システムのメモリ割り当ての粒度(最小単位)に一致するオフセットを指定し

    なければならない。それ以外の場合、関数は失敗する。つまり、このオフセットは、メモリ割り当ての粒度の倍数でなければならない。

    GetSystemInfo 関数を呼び出し、SYSTEM_INFO 構造体の dwAllocationGranularity メンバに書き込まれた値を使って、システムのメ

    モリ割り当ての粒度を取得する。
dwNumberOfBytesToMap
    マップ対象のファイルのバイト数を指定する。0 を指定すると、ファイルマッピングオブジェクト全体がマップされる。
 

戻り値
    関数が成功すると、ファイルがマップされたビューの開始アドレスが返る。
    関数が失敗すると、NULL が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。