次のように(共有)名前付きファイルマッピングオブジェクトに書き込もうとしています:
//ENTER CRITICAL SECTION FIRST
int ncbSzMapping = 0x92B8; //Size of a shared struct
hFileMapping = CreateFileMapping((HANDLE)INVALID_HANDLE_VALUE,
NULL, PAGE_READWRITE,
0, ncbSzMapping,
_T("mapping_name"));
if(hFileMapping)
{
BYTE* pRWData = MapViewOfFile(hFileMapping,
FILE_MAP_ALL_ACCESS, 0, 0, ncbSzMapping);
if(pRWData)
{
//Write data into 'pRWData' of 'ncbSzMapping' bytes
UnmapViewOfFile(pRWData);
}
}
...
//LEAVE CRITICAL SECTION
上記のコードは問題なく動作します。しかし、上記のコードに変更するncbSzMapping
と0x8A8B8
成功しますが、後でコードを下に移動すると、関数呼び出しの直前に例外 c00000fd が発生し、意味がありません。
そのサイズの増加が違いを生む理由とそれを修正する方法はありますか?