OpenFileMapping: GetLastError = 2 - PullRequest
       13

OpenFileMapping: GetLastError = 2

0 голосов
/ 18 сентября 2018

Я пытаюсь разделить память между двумя процессами C # (EXE) и C ++ (DLL).DLL C ++ динамически загружается процессом-получателем Citrix.

Ниже приведен мой код на C # и C ++:

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);
    }
}
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

...