Я пишу приложение с общей памятью и создаю именованные мьютексы с соответствующим префиксом "Local\"
для имени. Однако каждый раз, когда я вызываю функцию CreateMutex
для создания дескрипторов, я получаю возвращаемое значение NULL
. Я даже пытаюсь позвонить OpenMutex
после этого и получить NULL
возврат.
Функция GetLastError()
возвращает 6
, что означает ERROR_INVALID_HANDLE
. Я полагаю, что это происходит с первой попытки создать этот именованный мьютекс в любом процессе. Я включил windows.h
после включения некоторых компонентов MFC и использую CMutex
в другом месте приложения; так что я не знаю, если это проблема или нет. Я всегда передаю NULL
и FALSE
для первых двух параметров и использую Windows XP.
Это краткое описание того, что делает мой код:
char to_name[16] = "Local\\to_1";
d_mutex_to_h = CreateMutex(NULL, FALSE, to_name);
if (d_mutex_to_h == NULL)
{
d_mutex_to_h = OpenMutex(NULL, FALSE, to_name);
}