Программирование для Windows NT

Открытие события


Если событие используется задачами, созданными только в рамках одного процесса, его не нужно открывать. В качестве параметра функциям, изменяющим состояние объекта-события, вы можете передавать идентификатор события, полученный при его создании от функции CreateEvent.

Если же событие используется для синхронизации задач, принадлежащих разным процессам, вы должны при создании события задать его имя. Задача, изменяющая состояние события и принадлежащая другому процессу, должна открыть объект-событие с помощью функции OpenEvent, передав ей имя этого объекта.

Прототип функции OpenEvent представлен ниже:

HANDLE OpenEvent(

  DWORD   fdwAccess,      // флаги доступа

  BOOL    fInherit,       // флаг наследования

  LPCTSTR lpszEventName); // адрес имени объекта-события

Флаги доступа, передаваемые через параметр fdwAccess, определяют требуемый уровень доступа к объекту-событию. Этот параметр может быть комбинацией следующих значений:

Значение

Описание



EVENT_ALL_ACCESS

Указаны все возможные флаги доступа

EVENT_MODIFY_STATE

Полученный идентификатор можно будет использовать для функций SetEvent и ResetEvent

SYNCHRONIZE

Полученный идентификатор можно будет использовать в любых функциях ожидания события

Параметр fInherit определяет возможность наследования полученного идентфикатора. Если этот параметр равен TRUE, идентфикатор может наследоваться дочерними процессами. Если же он равен FALSE, наследование не допускается.

И, наконец, через параметр lpszEventName вы должны передать функции адрес символьной строки, содержащей имя объекта-события.

Заметим, что с помощью функции OpenEvent несколько задач могут открыть один и тот же объект-событие и затем выполнять одновременное ожидание для этого объекта.



Содержание раздела