CreateFileMappingとOpenFileMappingを使用して、プロセス間でメモリを共有しようとしています。これは私が望むように機能していません-OpenFileMappingはnullを返し、GetLastErrorは5-アクセスが拒否されました。私が間違っていることについて何か考えはありますか?名前はMemoryTestのようなものです。
編集:
CreateFileMappingを両方とも使用すると、他のプロセスで書き込まれたデータを読み取ることができます。これが問題になる理由は、エラー183が発生するためです-メモリ領域はすでに存在します。ただし、それでも既存のメモリへのハンドルを返します。
var map_handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(int), name.c_str());
....
var handle = MapViewOfFile(map_handle, FILE_MAP_ALL_ACCESS , 0, 0, 0)
*handle = 10;
UnMapViewOfFile(map_handle);
getchar();
その他のプロセス:
var map_handle = OpenFileMapping(PAGE_READWRITE, false, name.c_str())
....
var handle = MapViewOfFile(map_handle, FILE_MAP_ALL_ACCESS , 0, 0, 0) //returns null
var out = *handle;
getchar();
ただし、これは2番目のプロセスで機能します。
var map_handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(int), name.c_str());
....
var handle = MapViewOfFile(map_handle, FILE_MAP_ALL_ACCESS , 0, 0, 0) //returns null
var out = *handle;
getchar();