2012-05-11 12 views
3

Cのプログラムを終了しなければなりませんが、タスクの共有メモリ部分に固執しています。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

MapViewOfFileは実際にはHANDLEではなく、voidへのポインタを返します。

は、あなただけの適切なものをキャストする必要があります。

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(...); 
関連する問題