我必须完成我的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
指向我的结构? (我需要从另一个进程获取结构)
希望我足够清楚!非常感谢!
答案 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(...);