단일 프로세스에서 MMF를 이용하여 시스템 캐시를 메모리에 맵핑하고 맵핑된 메모리를 공유메모리 처럼 사용하는 예제 입니다
기본 타입에 대한 typedef가 되어있습니다. 이해가 안가시는 부분은 댓글 달아주세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
 
#include "pch.h"
#include <iostream>
#include "3vmw9.hpp"
 
 
using namespace std;
using namespace rv2;
 
mutx::t mut;
 
b::t writer() {
    hnd::t hMemoryMap = (hnd::t)0xFFFFFFFF;
    y::p   pMemoryMap = NULL;
    s::t   data       = "hello mmf..!";
    y::p   yhdr       = nil;
    z::t   size       = yHdr_s(yhdr, data);
 
    hMemoryMap = CreateFileMapping(hMemoryMap, NULL, PAGE_READWRITE, 0size, L"mmf_server");
 
    if (!hMemoryMap) {
        MessageBox(NULL, L"failed createFileMaping", L"error", MB_OK);
        return FALSE;
    }
 
    pMemoryMap = (y::p)MapViewOfFile(hMemoryMap, FILE_MAP_ALL_ACCESS, 000);
 
    if (!pMemoryMap) {
        CloseHandle(hMemoryMap);
        MessageBox(NULL, L"failed mapViewofFile", L"error", MB_OK);
        return FALSE;
    }
 
    mut.lock();
    memcpy(pMemoryMap, yhdr, size);
    mut.unlock();
 
    while (trueif (_kbhit()) break;
 
    if (pMemoryMap) UnmapViewOfFile(pMemoryMap);
    if (hMemoryMap) CloseHandle(hMemoryMap);
 
    return true;
}
b::t reader(){
    hnd::t hMemoryMap = NULL;
    y::p   pMemoryMap = nil;
    s::t   data       = "";
    y::p   yhdr = nil;
 
    hMemoryMap = OpenFileMapping(FILE_MAP_READ, FALSE, L"mmf_server");
 
    if (!hMemoryMap) {
        MessageBox(NULL, L"OpenFileMapping", L"error", MB_OK);
        return FALSE;
    }
 
    pMemoryMap = (y::p)MapViewOfFile(hMemoryMap, FILE_MAP_READ, 000);
 
    yhdr = pMemoryMap;
 
    co_s(s_yHdr(yhdr));
 
    while(trueif (_kbhit()) break;
 
    if (pMemoryMap) UnmapViewOfFile(pMemoryMap);
    if (hMemoryMap) CloseHandle(hMemoryMap);
 
    return true;
}
int main()
{
    thr::t th01(writer);
    thr::t th02(reader);
 
    co_s("end main()...");
 
    th01.join();
    th02.join();
 
    return 0;
}
 
cs


end main()...

hello mmf..!

+ Recent posts