記憶體對應檔使用詳解

來源:互聯網
上載者:User

下午修改個程式,需要在同一個解決方案下的不同的項目下通訊。同事提到了記憶體對應檔。原來是個挺好的類。

只要訪問同一個記憶體對應檔即可實現通訊。不同的項目都可以訪問(據說檔案記憶體中有儲存開啟次數的標誌-Num,每開啟一次,增加一,如果為0,自動釋放記憶體)。應用程式終止的時候,對應檔的記憶體被自動釋放。

記憶體對應檔,顧名思義,是個檔案。從最簡單的檔案操作入手。

HANDLE  hMapFile; //對應檔控制代碼
LPVOID  pMapFile;//檔案位移地址

檔案的建立:

CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,0,sizeof(MyhssUser),Mystrfile);

參數詳解:

   HANDLE CreateFileMapping(  HANDLE hFile, //物理檔案控制代碼  LPSECURITY_ATTRIBUTES lpAttributes, //安全設定  DWORD flProtect, //保護設定  DWORD dwMaximumSizeHigh, //高位檔案大小  DWORD dwMaximumSizeLow, //低位檔案大小  LPCTSTR lpName //共用記憶體名稱  );

傳回值:HANDLE

寫檔案:

if( pMapFile != NULL ) {m_WriteFile = (MyhssUser *)pMapFile;//m_MyWriteFile是自訂的結構體strcpy(m_WriteFile->m_ID ,"1");strcpy(m_WriteFile->m_pwd , "1");}

開啟檔案:

hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,Mystrfile);

參數說明:

  dwDesiredAccess Long,帶有首碼FILE_MAP_???的一個常數。參考下個解釋。  bInheritHandle Long,如這個函數返回的控制代碼能由當前進程啟動的新進程繼承,則這個參數為TRUE。  lpName String,指定要開啟的檔案對應物件名稱

MapViewOfFile函數dwDesiredAccess參數的說明

  hFileMappingObject Long,檔案對應物件的控制代碼。  dwDesiredAccess Long,下述常數之一:  FILE_MAP_WRITE 映射可讀可寫。檔案對應物件必須通過PAGE_READWRITE訪問建立。  FILE_MAP_READ 映射唯讀。檔案對應物件必須通過PAGE_READ 或 PAGE_READWRITE訪問建立。  FILE_MAP_ALL_ACCESS 與FILE_MAP_WRITE相同。  FILE_MAP_COPY 映射時保留寫操作的副本。檔案對應物件必須用PAGE_WRITECOPY訪問在win95下建立  dwFileOffsetHigh Long,檔案中映射起點的高32位地址。  dwFileOffsetLow Long,檔案中映射起點的低32位地址。  dwNumberOfBytesToMap Long,檔案中要映射的位元組數。用零映射整個檔案對應物件。  lpBaseAddress Long,指定對應檔映射對象的地址。如這個地址處沒有足夠的記憶體空間,那麼對MapViewOfFileEx的調用會失效。零表示允許windows尋找一個地址。

讀檔案:

pMapFile = MapViewOfFile(hMapFile,FILE_MAP_ALL_ACCESS,0,0,0);//將一個檔案對應物件映射到當前應用程式的地址空間if( pMapFile != NULL ) {m_ReadFile = (MyhssUser*)pMapFile;m_ReadFile->m_ID="1";}

關閉檔案:

UnmapViewOfFile(pMapFile);CloseHandle(hMapFile);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.