こんにちは私は正しく作成し、マップされたファイル(ウィンドウのためのmmap)process1があります。私はmmapとデータを書き込むことができますが、他のプロセスではデータを読むことができます。他の関数とのファイルマッピングへのアクセス
process1の別の機能でマップされたファイルにアクセスするときに問題があります。
私はこのようなマップファイルを作成:私はしません
int mancontrol(void* pvBrick, HANDLE hMutex, LPCSTR pBuf)
{
char Msg[256];
string dataString = "";
dataString = "AAAA en BBBB";
strcpy(Msg, dataString.c_str());
CopyMemory((PVOID)pBuf, Msg, strlen(Msg));
dataString = "";
:私は、マップされたファイルをアクセスも、そこにデータを書き込みたい機能では
TCHAR szName[]=TEXT("Global\\MyFileMappingObject");
int mancontrol(void* pvBrick, HANDLE hMutex);
int main()
{
//Handels and vars for IPC
HANDLE hMapFile;
LPCTSTR pBuf;
char szMsg[256];
string dataStr = "";
//Create file mapping
hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, BUF_SIZE, szName);
if (hMapFile == NULL)
{
printf("Failed to create a mmap \n");
return 1;
}
//Map file(MapViewOfFile) and return pointer of the mapped file(file view)
pBuf = (LPTSTR) MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, BUF_SIZE);
if (pBuf == NULL)
{
printf("Failed to map mmap");
CloseHandle(hMapFile);
return 1;
}
は次のようになります新しいエラーを取得しますが、proces2はデータを読み取ることができません(メインでは、そこにprocess2が送信できるデータがあります)。関数内でマップされたファイルを開いて再度マップする必要がありますか?それとも、私の議論は間違っていますか?
私はミューテックスを省略していた、ミューテックスはMMAPを作成し、mancontrol機能の開口部befor解放されているか確認します。明日に私は完全なコードをポストウィル。私は今、それを取得カント。 フィードバックをお寄せいただきありがとうございます! – RSNL