CreateFileMappingおよびMapViewOfFile関数



Createfilemapping Mapviewoffile Function



ソフトウェア開発プロセスでは、プロセス間でデータを共有する必要が頻繁に発生します。プロセス作成、Bプロセスなどの計算データはデータをグラフィカルに表示します。この開発アプローチは、大きなプログラムを別々の小さなプログラムに分離し、ソフトウェアの成功率を向上させ、チーム開発にさらに適したものにし、ソフトウェアの開発を加速することができます。口頭を使用する前に 名前付きパイプを実現する方法 ファイルマッピングの使用方法に関する次のデータ共有。 CreateFileMappingは、最初に関数を使用してデータを共有するファイルハンドルを作成し、次にMapViewOfFileを使用して共有メモリアドレスを取得し、次に共有OpenFileMapping関数の名前を使用して別のプロセスでファイルを開きます。データを共有するためのさまざまなプロセス。

関数CreateFileMapping、MapViewOfFile次のステートメント:



WINBASEAPI __out HANDLE WINAPI CreateFileMappingA( __in HANDLE hFile, __in_opt LPSECURITY_ATTRIBUTES lpFileMappingAttributes, __in DWORD flProtect, __in DWORD dwMaximumSizeHigh, __in DWORD dwMaximumSizeLow, __in_opt LPCSTR lpName ) WINBASEAPI __out HANDLE WINAPI CreateFileMappingW( __in HANDLE hFile, __in_opt LPSECURITY_ATTRIBUTES lpFileMappingAttributes, __in DWORD flProtect, __in DWORD dwMaximumSizeHigh, __in DWORD dwMaximumSizeLow, __in_opt LPCWSTR lpName ) #ifdef UNICODE #define CreateFileMapping CreateFileMappingW #else #define CreateFileMapping CreateFileMappingA #endif // !UNICODE WINBASEAPI __out LPVOID WINAPI MapViewOfFile( __in HANDLE hFileMappingObject, __in DWORD dwDesiredAccess, __in DWORD dwFileOffsetHigh, __in DWORD dwFileOffsetLow, __in SIZE_T dwNumberOfBytesToMap )

hFile 共有ファイルへのハンドルを作成することです。

lpFileMappingAttributes ファイル共有属性。



flProtect ファイルが読み取り/書き込みマッピングファイル属性の場合。

dwMaximumSizeHigh ファイル共有は上位バイトのサイズです。

dwMaximumSizeLow ファイル共有は下位バイトのサイズです。



lpName 共有ファイルオブジェクト名。

hFileMappingObject 共有ファイルオブジェクト。

dwDesiredAccess ファイル共有属性。

dwFileOffsetHigh ファイル共有領域のオフセットアドレスです。

dwFileOffsetLow ファイル共有領域のオフセットアドレスです。

dwNumberOfBytesToMap 共有データの長さ。

次のように関数を呼び出す例:

//File Sharing. void FileMapping(void) { // Open the file sharing of objects. m_hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE,_T('TestFileMap')) if (m_hMapFile) { // display file data sharing. LPTSTR lpMapAddr = (LPTSTR)MapViewOfFile(m_hMapFile,FILE_MAP_ALL_ACCESS, 0,0,0) OutputDebugString(lpMapAddr) } else { // Create a shared file. m_hMapFile = CreateFileMapping( (HANDLE)0xFFFFFFFF,NULL, PAGE_READWRITE,0,1024,_T('TestFileMap')) // copy data to a shared file. LPTSTR lpMapAddr = (LPTSTR)MapViewOfFile(m_hMapFile,FILE_MAP_ALL_ACCESS, 0,0,0) std::wstring strTest(_T('TestFileMap')) wcscpy(lpMapAddr,strTest.c_str()) FlushViewOfFile(lpMapAddr,strTest.length()+1) } }


複製:https://www.cnblogs.com/yongqiangyue/archive/2012/08/01/3984787.html