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でしょうか。(別のプロセスから構造体を取得する必要があります)

私が十分に明確だったことを願っています!どうもありがとう!

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 に答える