C - 共享内存强制转换为结构体

3
我是一名可以帮助翻译文本的助手。

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

基本上这是我的任务:

MapViewOfFile返回指向void的指针,您可以将其转换为任何您喜欢的类型。我建议您创建一个结构体来表示您想要内存具有的结构,并将返回指针转换为此结构体。

我调用了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个回答

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(...);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接