Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка ТВП ЛР A5.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
611.84 Кб
Скачать

Создание объекта - событие

Для создания объекта - событие вы должны использовать функцию CreateEvent, прототип которой приводится ниже:

HANDLE CreateEvent(

LPSECURITY_ATTRIBUTES lpSecurityAttributes

// атрибуты защиты

BOOL fManualReset,

// тип объекта – событие

BOOL fInitialState,

// начальное состояние

LPCTSTR IpName);

// имя объекта - событие

В качестве первого параметра (атрибуты защиты) вы можете указать значение NULL.

Параметр fManualReset сообщает системе, хотите Вы создать объект - событие со сбросом вручную (TRUE) или с автосбросом (FALSE).

Параметр fInitialState определяет начальное состояние события: свободное (TRUE) или занятое (FALSE).

После того как система создает объект событие, CreateEvent возвращает идентификатор события, специфичный для конкретного процесса.

Через параметр IpName вы должны передать указатель на имя объекта – событие. Это имя не должно содержать символ "\" и его длина не должна превышать значение МАХ_РАТН.

Задачи из других процессов могут получить доступ к этому объекту следующими способами:

    1. вызовом функции CreateEvent с тем же параметром lpName;

    2. наследованием описателя;

    3. применением функции DuplicateHandle;

    4. вызовом функции OpenEvent c передачей в параметре pszName имени, совпадающего с указанным в аналогичном параметре функции CreateEvent.

Открытие объекта - событие

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

HANDLE OpenEvent(

DWORD fdwAccess,

// требуемый доступ

BOOL fInherit,

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

LPCTSTR IpName );

// адрес имени объекта – событие

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

EVENT_ALL_ACCESS

Приложение получает полный доступ к объекту

EVENT_MODIFY_STATE

Приложение может изменять состояние объекта функциями SetEvent и ResetEvent

SYNCHRONIZE

Только для Windows NT – прило-жение может использовать объект только в функциях ожидания

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

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

Управление состоянием объекта - событие

Для перевода объекта - событие в свободное состояние необходимо использовать функцию ResetEvent:

BOOL ResetEvent(HANDLE hEvent);

Для перевода объекта - событие в занятое состояние необходимо использовать функцию SetEvent:

BOOL SetEvent(HANDLE hEvenеt);