Здравствуйте всем. Опишу проблему: Существует два процесса(назову их процессА и процессВ). ПроцессВ является дочерним процессом процессаA. ПроцессА создает евент так: Код (Text): HANDLE hEvent=CreateEventA(0,FALSE,FALSE,"EventName"); Затем встает в позу ожидания: Код (Text): WaitForSingleObject(hEvent,INFINITE); Тем временем процессВ получает хэндл события: Код (Text): HANDLE hEvent=OpenEvent(EVENT_MODIFY_STATE,FALSE,"EventName"); Затем выполняет кое-какую работу и дает отмашку, мол я закончил: Код (Text): SetEvent(hEvent); Проблема в том, что OpenEvent завершается неудачно, GetLastError возвращает ERROR_NOACCESS(типа нет доступа). Если у кого нибудь есть мысли, поможите пожалуйста. P.S. Ось WinXP SP3. Оба процесса запущенны под администратором.
lpEventAttributes [in] Pointer to a SECURITY_ATTRIBUTES structure that determines whether the returned handle can be inherited by child processes. If lpEventAttributes is NULL, the handle cannot be inherited. Если не работает попробуйте заполнить структуру для 1 параметра CreateEvent
zloi_goh Обсуждалось недавно, GetLastError юзается если тока функция возвращает ошибку, в успешном случае код ошибки не меняется.
CrystalIC Спасибо, указал нужное направление. ERROR_NOACCESS результат жизнидеятельности вызываемой раннее функции. Трабл решился так: Sleep(1000); Просто процессВ вызывл OpenEvent раньше чем эвэнт был создан процессомА. Тему можно закрывать. Всем спасибо за проявленное участие.
zloi_goh чем использовать Sleep() (не исправляя ошибку, а лишь значительно уменьшая вероятность ее возникновения), рекомендую вызывать CreateEvent до создания процесса B. либо вместо OpenEvent во втором процессе вызывай опять CreateEvent.