首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenFileMapping: GetLastError=2

OpenFileMapping: GetLastError=2
EN

Stack Overflow用户
提问于 2018-09-18 19:24:43
回答 1查看 2.1K关注 0票数 0

我正在尝试在两个进程C# (EXE)和C++ (DLL)之间共享内存。Citrix由C++接收器进程动态加载。

下面是我的C#和C++代码:

代码语言:javascript
复制
private void Test()
{
    string data = "Hello";
    _memoryMap = MemoryMappedFile.CreateOrOpen("14614C87-8D7F-45FC-8D59-DCBF1715A715", data.Length, MemoryMappedFileAccess.ReadWrite);

    var stream = _memoryMap.CreateViewStream();

    using (BinaryWriter binReader = new BinaryWriter(stream))
    {
        binReader.Write(data);
    }
}
代码语言:javascript
复制
void readFromMemoryMap()
{   
    HANDLE hMapObject = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, L"14614C87-8D7F-45FC-8D59-DCBF1715A715");

    char buffer[2000];
    if (hMapObject == NULL)
    {
        sprintf(buffer, "OpenFileMapping: GetLastError=%d", GetLastError());        
    }

    char *fileBuffer = (char *)MapViewOfFile(hMapObject, FILE_MAP_ALL_ACCESS, 0, 0, 6);

    UnmapViewOfFile(fileBuffer);
    CloseHandle(hMapObject);
}

我负责编写和读取对象序列。我的C#应用程序的内存映射句柄没有崩溃。我使用一个有权限的管理员帐户运行了这段代码。

我正面临下面的错误。有没有人能帮我解决这个错误?

我遵循下面的链接来解决这个问题。

OpenFileMapping ERROR_FILE_NOT_FOUND

EN

回答 1

Stack Overflow用户

发布于 2020-05-02 02:06:02

尝试在对象名称前加上全局前缀\,如下所示:https://docs.microsoft.com/en-us/windows/win32/memory/creating-named-shared-memory

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52385528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档