gpt4 book ai didi

c++ - OpenFileMapping 问题,找不到文件映射

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:15 25 4
gpt4 key购买 nike

我目前正在尝试使用文件映射来测试进程间通信。我的第一个程序,我将称之为生产者,在创建文件映射并写入其中的以下代码上没有错误,如下所示:

 hEvent = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, // maximum object size (high-order DWORD)
256, // maximum object size (low-order DWORD)
TEXT("hEvent"));

if (hEvent == NULL)
{
MessageBox(NULL, TEXT("error: cannot create file map"), TEXT("gotit"), MB_OK);
_tprintf(TEXT("Could not create file mapping object (%d).\n"),
GetLastError());
return 1;
}

mapBuffer = (LPTSTR) MapViewOfFile(hEvent, FILE_MAP_ALL_ACCESS, NULL, NULL, 256);
if (mapBuffer == NULL)
{
MessageBox(NULL, TEXT("error: cannot view map"), TEXT("gotit"), MB_OK);
_tprintf(TEXT("Could not map view of file (%d).\n"),
GetLastError());

CloseHandle(hEvent);

return 1;
}

CopyMemory((PVOID)mapBuffer, teststring, 256);
_getch();



UnmapViewOfFile(mapBuffer);
CloseHandle(hEvent);

然而,我的第二个程序,它模仿第二个过程,我将命名消费者,在尝试重新打开此文件映射时出错,使用以下代码:

 hEvent = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, TEXT("hEvent"));
if (hEvent == NULL)
{
MessageBox(NULL, TEXT("error opening filemap"), TEXT("gotit"), MB_OK);
GetLastError();
return 1;
}

谁能看出我遗漏了什么明显的东西?,因为它直接越过我的头。

最佳答案

像所有内核对象一样,文件映射在最后一个句柄关闭时被删除。由于您的第一个程序会立即关闭句柄,因此第二个程序找不到任何东西。只要您希望映射存在,就必须保持句柄打开。

关于c++ - OpenFileMapping 问题,找不到文件映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10376962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com