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