雷火电竞-中国电竞赛事及体育赛事平台

歡迎來(lái)到入門(mén)教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

C++進(jìn)程共享數(shù)據(jù)封裝成類(lèi)實(shí)例

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊:

本文實(shí)例講述了C++進(jìn)程共享數(shù)據(jù)封裝成類(lèi)的方法,分享給大家供大家參考。具體方法如下:

ShareMemory.cpp源文件如下:

復(fù)制代碼 代碼如下:
#include "ShareMemory.h" 
 
CShareMemory::CShareMemory(const    char* pszMapName, int nFileSize, BOOL bServer):m_hFileMap(NULL),m_pBuffer(NULL) 

    if (bServer) //是服務(wù)端,就創(chuàng)建 
    { 
        m_hFileMap = ::CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_EXECUTE_READWRITE, 0, nFileSize, pszMapName); 
    } 
    else //否則就打開(kāi) 
    { 
        m_hFileMap = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, pszMapName); 
    } 
    //把它映射到內(nèi)存 
    m_pBuffer = ::MapViewOfFile(m_hFileMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); 

 
CShareMemory::~CShareMemory(void) 

    ::UnmapViewOfFile(m_pBuffer); 
    ::CloseHandle(m_hFileMap); 
}

ShareMemory.h頭文件如下:

復(fù)制代碼 代碼如下:
#pragma once 
#include <Windows.h> 
 
class CShareMemory 

public: 
    CShareMemory(const  char* pszMapName, int nFileSize=0, BOOL bServer=FALSE); 
    ~CShareMemory(void); 
    //屬性 
    LPVOID GetBuffer() const  
    { 
        return m_pBuffer; 
    } 
 
    //實(shí)現(xiàn) 
private: 
    HANDLE m_hFileMap; 
    LPVOID m_pBuffer; 
};

使用時(shí)用法如下:

服務(wù)端:

復(fù)制代碼 代碼如下:
#include "ShareMemory.h" 
int main(int argc, char *argv[]) 

 
    //進(jìn)程間內(nèi)存共享 
    LPCTSTR lpName= "hello"; 
    LPCTSTR lpContent = "123456"; 
    CShareMemory* pShareMemory = new CShareMemory(lpName, 20, FALSE); 
    LPVOID lpBase = pShareMemory->GetBuffer(); 
    strcpy((char*)lpBase, lpContent); 
     
    printf("%s\n",(char*)pShareMemory->GetBuffer()); 
    getchar(); 
    return 0; 
}

客戶(hù)端:

復(fù)制代碼 代碼如下:
#include "ShareMemory.h" 
int main(int argc, char *argv[]) 

 
    //進(jìn)程間內(nèi)存共享 
    LPCTSTR lpName= "hello"; 
    LPCTSTR lpContent = "123456"; 
    CShareMemory* pShareMemory = new CShareMemory(lpName, 20, FALSE); 
 
    printf("%s\n",(char*)pShareMemory->GetBuffer()); 
    getchar(); 
    return 0; 
}

希望本文所述對(duì)大家的C++程序設(shè)計(jì)有所幫助。

上一篇:C++封裝IATHOOK類(lèi)實(shí)例

欄    目:C語(yǔ)言

下一篇:C++基于hook iat改變Messagebox實(shí)例

本文標(biāo)題:C++進(jìn)程共享數(shù)據(jù)封裝成類(lèi)實(shí)例

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3240.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有