C - 共享内存转换为struct

时间:2012-05-11 03:47:31

标签: c shared-memory

我必须完成我的C程序,但是我被困在任务的共享内存部分。

基本上这就是我应该做的: MapViewOfFile返回指向void的指针,您可以将其转换为您喜欢的任何内容。我建议您创建struct来表示您希望内存具有的结构,并将返回指针强制转换为此结构。“

我调用MapViewOffFile函数,但我不明白我应该如何将结构指向它。 代码:

typedef struct {
        LARGE_INTEGER start;
        LARGE_INTEGER end;
        LARGE_INTEGER frq;
} TimeOfSharing;

TimeOfSharing timing;

HANDLE fileView;
fileView = MapViewOfFile(fileHandle, FILE_MAP_READ | FILE_MAP_WRITE,PAGE_READONLY, 0, 0);

那么如何将fileView指向我的结构? (我需要从另一个进程获取结构)

希望我足够清楚!非常感谢!

1 个答案:

答案 0 :(得分:1)

MapViewOfFile实际上返回一个指向void的指针,而不是HANDLE

你只需要恰当地施展:

TimeOfSharing *timing = (TimeOfSharing *)MapViewOfFile(...);

// Then access as you see fit, e.g.:
LARGE_INTEGER length;

length.QuadPart = timing->end.QuadPart - timing->start.QuadPart;

如果您确实需要/想要实际复制数据,而不仅仅是访问它:

TimeOfSharing my_copy = *(TimeOfSharing *)MapViewOfFile(...);