Поделиться через


Функция ZwOpenEvent (wdm.h)

Подпрограмма ZwOpenEvent открывает дескриптор существующего именованного объекта события с указанным требуемым доступом.

Синтаксис

NTSYSCALLAPI NTSTATUS ZwOpenEvent(
  [out] PHANDLE            EventHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes
);

Параметры

[out] EventHandle

Указатель на переменную, которая получит дескриптор объекта события. Дескриптор содержит сведения о бухгалтерском учете, такие как количество ссылок и контекст безопасности.

[in] DesiredAccess

Значение ACCESS_MASK , представляющее требуемые типы доступа для объекта события. В следующей таблице содержатся значения ACCESS_MASK событий.

Значение Требуемый доступ
EVENT_QUERY_STATE Запрос состояния объекта события.
EVENT_MODIFY_STATE Измените состояние объекта события.
EVENT_ALL_ACCESS Все возможные права доступа к объекту события.

[in] ObjectAttributes

Указатель на структуру атрибутов объекта, предоставленную вызывающим объектом для использования для указанного объекта. Например, эти атрибуты будут включать ObjectName и атрибуты дескриптора. Этот параметр инициализируется путем вызова макроса InitializeObjectAttributes .

Возвращаемое значение

ZwOpenEvent возвращает STATUS_SUCCESS или соответствующее состояние ошибки. Эта подпрограмма может возвращать один из следующих кодов состояния ошибки:

Код возврата Описание
STATUS_INSUFFICIENT_RESOURCES Ресурсы, необходимые этой функции, не могут быть выделены.
STATUS_INVALID_PARAMETER Структура ObjectAttributes не была предоставлена или содержала недопустимое значение параметра.
STATUS_OBJECT_NAME_INVALID Параметр ObjectAttributes содержал значение ObjectName в структуре OBJECT_ATTRIBUTES , которая была недопустимой.
STATUS_OBJECT_PATH_SYNTAX_BAD Путь к объекту содержит неправильный синтаксис. Например, параметр ObjectAttributes не содержит элемента RootDirectory , но элемент ObjectName в структуре OBJECT_ATTRIBUTES является пустой строкой или не начинается с символа OBJECT_NAME_PATH_SEPARATOR.
STATUS_OBJECT_PATH_NOT_FOUND Путь к объекту не найден, что указывает на то, что он не существует.
STATUS_OBJECT_NAME_NOT_FOUND Не найдено имя объекта, указывающее, что объект не существует.
STATUS_PRIVILEGE_NOT_HELD У вызывающего объекта не было необходимых привилегий для создания дескриптора с доступом, указанным в параметре DesiredAccess .

Комментарии

ZwOpenEvent открывает существующий именованный объект события и создает дескриптор для объекта с указанным требуемым доступом.

ZwOpenEvent может открывать события уведомления или синхронизации.

События используются для координации выполнения. Драйверы файловой системы могут использовать события, чтобы позволить вызывающему объекту ждать завершения запрошенной операции, пока данное событие не перейдет в состояние Signaled .

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

Если вызов функции ZwOpenEvent выполняется в пользовательском режиме, следует использовать имя NtOpenEvent вместо ZwOpenEvent.

Для вызовов из драйверов режима ядра версии NtXxx и ZwXxx подпрограммы Собственные системные службы Windows могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями подпрограмм NtXxx и ZwXxx см. в разделе Использование версий NT и Zw подпрограмм собственных системных служб.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

См. также раздел

ACCESS_MASK

InitializeObjectAttributes

IoCreateNotificationEvent

IoCreateSynchronizationEvent

KeClearEvent

KeResetEvent

KeSetEvent

KeWaitForSingleObject

Использование версий nt и Zw собственных системных служб

ZwClose

ZwCreateEvent

ZwSetEvent

ZwWaitForSingleObject