发送结构时如何使用MapViewOfFile

时间:2019-03-14 18:02:53

标签: c++ windows api kernel

我已经在here

之前问过这个问题

但是我仍然不明白.home-banner .slide .video-slide { background-color: #000; } .home-banner.loading .video-background { opacity: 0; } .video-background { position: relative; top: 0%; left: 0; padding-top: 56.25%; width: 100%; -webkit-transform: translateY(-0%); -ms-transform: translateY(-0%); transform: translateY(-0%); -webkit-transition: 2s opacity ease; transition: 2s opacity ease; transition-delay: 2.8s; opacity: 1; } .video-foreground, .video-background iframe { position: absolute; top: 0; left: 0%; width: 100%; height: 100%; pointer-events: none; } 的工作方式。我已经看到了msdn的示例,但仍然感到困惑。
我只需要有人向我解释如何将整个结构发送到共享部分并从那里阅读。
MapViewOfFile在发送和读取var时实际上是如何工作的。

但是最重要的是,在将其从进程1初始化为进程2之后,如何发送整个结构(您可以在上面链接的旧线程中看到我在说什么)。

1 个答案:

答案 0 :(得分:1)

您可以复制结构,也可以简单地分配并共享它。两个应用都可以使用以下内容共享结构:

typedef struct {
    int foo;
    int bar;
} MYSTRUCT;

auto hMap = CreateFileMappingA(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0,
                sizeof(MYSTRUCT), "MyStructShareName");
MYSTRUCT* pMyStruct = (MYSTRUCT*) MapViewOfFile(hMap, FILE_MAP_READ |
                 FILE_MAP_WRITE, 0, 0, 0);

此时,两个应用程序都通过 pMyStruct 指向完全相同的内存。