Member 14648774 Ответов: 2

Createevent иногда возвращает код ошибки 5


У меня есть один exe-файл, который создает набор событий.Это создание события иногда возвращает код ошибки 5 иногда это успешно.

Ручка отношению к event1 = CreateEvent(null, и false, и false,"глобальный\\отношению к event1");
if (NULL == event1)
{
DBG_TRACE_L1("создание баннера, event1 сбой с кодом ошибки: "&ЛТ;&ЛТ; код последней ошибки());
}

HANDLE hEvent2= CreateEvent(NULL, FALSE, FALSE,"Global\\hEvent2");
if (NULL == hEvent2)
{
DBG_TRACE_L1("создать hEvent2 сбой с кодом ошибки: "&ЛТ;&ЛТ; код последней ошибки());
}
HANDLE hEvent3= CreateEvent(NULL, FALSE, FALSE,"Global\\hEvent3");
if (NULL == hEvent3)
{
DBG_TRACE_L1("создать hEvent3 сбой с кодом ошибки: "&ЛТ;&ЛТ; код последней ошибки());
}




когда я пытаюсь открыть событие я получаю код ошибки 5

Что я уже пробовал:

I have one exe  which creates set of events.This event creation sometimes return error code 5 sometimes it is successful.

HANDLE event1 = CreateEvent(NULL, FALSE, FALSE,"Global\\event1");
    if (NULL == event1)
    {
		DBG_TRACE_L1("Create event1 failed with an error code: "<< GetLastError());
    }
	
	HANDLE hEvent2= CreateEvent(NULL, FALSE, FALSE,"Global\\hEvent2");
    if (NULL == hEvent2)
    {
		DBG_TRACE_L1("Create hEvent2 failed with an error code: "<< GetLastError());
    }
	HANDLE hEvent3= CreateEvent(NULL, FALSE, FALSE,"Global\\hEvent3");
    if (NULL == hEvent3)
    {
		DBG_TRACE_L1("Create hEvent3  failed with an error code: "<< GetLastError());
    }




 when i try to open the event am getting error code 5

Richard MacCutchan

Где находится код, вызывающий OpenEvent?

2 Ответов

Рейтинг:
1

Shao Voon Wong

В соответствии с этим Страница ошибки MS, код ошибки 5 - "Доступ запрещен". Приложение, вероятно, не запускалось с правами администратора. Поскольку не CreateEvent, OpenEvent не удастся тоже.

В соответствии с этим Страница MSDN CreateEvent,

Цитата:
Если функция выполняется успешно, возвращаемое значение является дескриптором объекта события. Если именованный объект события существовал до вызова функции, функция возвращает дескриптор существующего объекта, а GetLastError возвращает ERROR_ALREADY_EXISTS.

Если функция не работает, возвращаемое значение равно NULL. Чтобы получить расширенную информацию об ошибках, вызовите GetLastError.


ERROR_ALREADY_EXISTS-это код 183. Щелкните правой кнопкой мыши на исполняемом файле и запустите его от имени администратора, чтобы увидеть, что проблема "доступ запрещен" все еще сохраняется. Программа, открывающая события, также должна запускаться от имени администратора, поскольку она обращается к глобальному объекту.


Рейтинг:
0

KarstenK

Вам нужно будет исправить права доступа (от имени администратора) для "глобального" пространства имен.

Если событие уже создано, то вы не можете его воссоздать. Прочтите документацию по этому вопросу CreateEvent.


Member 14648774

Если событие уже создано, createevent завершится ошибкой.Но openevent не должен потерпеть неудачу в этом случае, верно?.openevent вернет уже существующий дескриптор?