4.14 創(chuàng)建Mapping對(duì)象進(jìn)行共享數(shù)據(jù)[注意]

說(shuō)明

這里包含兩個(gè)程序,名字可看文章標(biāo)題和瀏覽器標(biāo)題

第一個(gè)代碼是第一個(gè)參數(shù)的,第二個(gè)代碼是第二個(gè)程序的

效果圖示兩個(gè)程序先后執(zhí)行的效果,先執(zhí)行程序一,再執(zhí)行程序二

效果

源碼

#include

#include

#include

#define BUF_SIZE 256

LPTSTR szName = TEXT("SharedFileMappingObject");

LPTSTR szMsg = TEXT("這是另一個(gè)進(jìn)程的信息");

int main(int argc, PCHAR argv[]){

HANDLE hMapFile;//文件映射句柄

LPTSTR pBuf;//共享數(shù)據(jù)緩沖區(qū)指針

//創(chuàng)建命名的文件映射,不代表硬盤(pán)上的文件

hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, BUF_SIZE, szName);

if (hMapFile == NULL || hMapFile == INVALID_HANDLE_VALUE){

printf("創(chuàng)建文件映射錯(cuò)誤: %d\n", GetLastError());

return 1;

}

//創(chuàng)建視圖

pBuf = (LPTSTR)MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE);

if (pBuf == NULL){

printf("創(chuàng)建文件映射視圖錯(cuò)誤: %d\n", GetLastError());

return 2;

}

//將共享數(shù)據(jù)賦值到文件映射中,如果允許時(shí)輸入了參數(shù)則使用參數(shù)

if (argc == 1){

CopyMemory((PVOID)pBuf, szMsg, strlen(szMsg));

} else{

DWORD dwCopyLen = (strlen(argv[1])< BUF_SIZE) ? strlen(argv[1]) : BUF_SIZE;

CopyMemory((PVOID)pBuf, argv[1], dwCopyLen);

}

printf("運(yùn)行程序,完成運(yùn)行后,按任意鍵退出\n");

getchar();

//取消映射,退出

UnmapViewOfFile(pBuf);

CloseHandle(hMapFile);

}

源碼

#include

#include

#define BUF_SIZE 256

TCHAR szName[] = TEXT("SharedFileMappingObject");//映射的名字要正確

int main(int argc, PCHAR argv[]){

HANDLE hMapFile;//映射對(duì)象句柄

LPTSTR pBuf;//字符串緩存指針

hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, szName);//打開(kāi)文件映射對(duì)象

if (hMapFile == NULL){

printf("打開(kāi)文件映射失敗: %d\n", GetLastError());

return 1;

}

//映射

pBuf = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE);

if (pBuf == NULL){

printf("文件映射視圖錯(cuò)誤: %d\n", GetLastError());

return 2;

}

//彈出得到的共享數(shù)據(jù)

MessageBox(NULL, pBuf, TEXT("映射內(nèi)容為"), MB_OK);

//取消映射,退出

UnmapViewOfFile(pBuf);

CloseHandle(hMapFile);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 說(shuō)明 第一個(gè)程序是服務(wù),第二個(gè)程序控制服務(wù) 好像需要管理員權(quán)限,不然啟動(dòng)失敗.. 效果 服務(wù)程序 名字是 MiSa...
    f675b1a02698閱讀 717評(píng)論 0 0
  • 系統(tǒng)與網(wǎng)絡(luò)編程 select函數(shù) select和pselect多用于I/O操作,他們見(jiàn)識(shí)多個(gè)文件描述符的集合,判斷...
    I踏雪尋梅閱讀 637評(píng)論 0 1
  • 教程一:視頻截圖(Tutorial 01: Making Screencaps) 首先我們需要了解視頻文件的一些基...
    90后的思維閱讀 4,980評(píng)論 0 3
  • 串口操作 串口操作需要的頭文件 #include /*標(biāo)準(zhǔn)輸入輸出定義*/ #include /*標(biāo)準(zhǔn)函數(shù)庫(kù)定...
    旅行家John閱讀 1,464評(píng)論 0 3
  • 剛下班回到家里,很累很累,我不喜歡上班,誰(shuí)喜歡上班呢?又累又苦,中途出錯(cuò)還要接受boss的無(wú)情批判,但每天上班讓我...
    溫水煮醬閱讀 109評(píng)論 0 1

友情鏈接更多精彩內(nèi)容