3

我必须完成我的 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我的结构呢?(我需要从另一个进程中获取结构)

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

4

1 回答 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(...);
于 2012-05-11T03:52:57.373 回答