WaitForMultipleObjects () доступ запрещен - PullRequest
0 голосов
/ 12 июня 2018

У меня есть эта функция потока ниже, которая просто ожидает два объекта ядра, чтобы получить сигнал.
Функция ожидания всегда возвращает WAIT_FAILED с error code 5 (access denied) и Iне могу сказать почему.

unsigned __stdcall func(void * p_this){
    ReceiverThread * ThisObj = (ReceiverThread *)p_this;
    HANDLE ClientsMutex = ClientsInterface::GetClientsMutex();
    HANDLE WaitFor[2];
    WaitFor[0] = ThisObj->PassiveEvent;
    WaitFor[1] = ClientsMutex;
    res = WaitForMultipleObjects(2, WaitFor, TRUE, INFINITE);
    switch (res)
    {
    case WAIT_OBJECT_0: // both signal
        if(!Clients->empty()){
           dosomthing();
           ReleaseMutex(ClientsMutex);
           ResetEvent(WaitFor[0]);
        }
        break;
    case WAIT_ABANDONED_0:
        MessageBox(NULL, "WAIT_ABANDONED", "WAIT ERR", MB_OK);
        break;
    case WAIT_TIMEOUT:
        MessageBox(NULL, "TimeOut !", "WAIT ERR", MB_OK);
        break;
    case WAIT_FAILED:
        MessageBox(NULL, "Function Failure !", to_string(GetLastError()).c_str() , MB_OK);
        break;
    }
}

Инициализация события выглядит следующим образом:

PassiveEvent = CreateEvent(
    NULL,              
    TRUE, // ResetEvent is required to set the event to non-signal state.   
    FALSE, // non-signaled initial state.             
    NULL
);

Инициализация мьютекса выглядит следующим образом:

Mutex = CreateMutex(NULL, FALSE, NULL);

Я знаю, что этонемного непрозрачно, но это вся информация, может быть, мне не хватает чего-то ясного, но я не могу понять, почему WaitForMultipleObjects() get access denied.есть идеи?

...