본문 바로가기
컴퓨터/C#

C#과 C++ 공유 메모리 사용

by Begi 2022. 5. 16.
반응형

공유 메모리는 메모리 매핑 파일(Memory-Mapped File)을 사용하여 데이터를 교환하는 것이다. 메모리 매핑 파일은 하드디스크가 아니라 램에 파일을 만들어 데이터를 고속으로 송수신할 수 있다.

 

C++에서 메모리 매핑 파일을 만들고 만들어진 메모리 매핑 파일을 C#에서 읽는 방법은 다음과 같다.

 

C++

C++에서 메모리 매핑 파일은 다음과 같이 사용한다.

 

다음과 같이 파일을 만든다. 파일 이름은 DataName이다.

 

    byte *p;
    HANDLE handle;

    handle = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(Pair), L"DataName");
    p = (byte*) MapViewOfFile(handle, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 1000);

 

파일에 데이터를 쓴다.

 

    memcpy(p, data, 1000);

 

종료할 때는 다음과 같이 핸들을 해제한다.

 

    if (handle != NULL)      CloseHandle(handle);

C#

C#에서 메모리 매핑 파일을 읽는 방법은 다음과 같다. 파일 이름이 DataName으로 같아야 한다.

 

    public static MemoryMappedFile mmf;
    public static MemoryMappedViewStream mmfvs;

    mmf = MemoryMappedFile.OpenExisting("DataName");
    mmfvs = mmf.CreateViewStream();

    mmfvs.Read(buf, 0, 1000);

반응형

'컴퓨터 > C#' 카테고리의 다른 글

C# 다른 프로그램 창 보이기  (0) 2022.05.26
C#에서 sscanf와 비슷한 기능  (0) 2022.05.23
C# 배열 메모리 할당/해제  (0) 2022.05.04
C# 주석 색깔 변경  (0) 2022.05.04
C# unsafe 컴파일 옵션  (0) 2022.05.04

댓글