Im создает DLL, которая разделяет память между различными приложениями.CreateFileMapping() name
код, который создает общую память выглядит следующим образом:
#define NAME_SIZE 4
HANDLE hSharedFile;
create(char[NAME_SIZE] name)
{
hSharedFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, (LPCSTR)name);
(...) //Other stuff that maps the view of the file etc.
}
Это не работает. Однако, если я заменю name
со строкой она работает:
SharedFile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 1024, (LPCSTR)"MY_TEST_NAME");
Как я могу получить эту работу с массив символов?
У меня есть java-фон, где вы просто будете использовать строку все время, что такое LPCSTR? И это касается ли мой проект MS VC++ с использованием Unicode
или Multi-Byte
набор символов
Что такое значение массив символов ('name') вы передаете в' create'? Каково значение возвращаемого значения и код ошибки (вы можете получить его с помощью «GetLastError») «CreateFileMapping», когда он терпит неудачу? –
Что вы передаете как параметр для создания функции? – Elalfer
Я передаю {'T', 'E', 'S', 'T'}, это не подводит, но я не могу открыть пространство разделяемой памяти позже в другом приложении. – sigvardsen