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


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

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

Синтаксис

NTSYSCALLAPI NTSTATUS ZwOpenEnlistment(
  [out]          PHANDLE            EnlistmentHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in]           HANDLE             RmHandle,
  [in]           LPGUID             EnlistmentGuid,
  [in, optional] POBJECT_ATTRIBUTES ObjectAttributes
);

Параметры

[out] EnlistmentHandle

Указатель на переменную, выделенную вызывающим объектом, которая получает дескриптор объекта зачисления, если вызов ZwOpenEnlistment завершается успешно.

[in] DesiredAccess

ACCESS_MASK типизированное значение, указывающее запрошенный доступ к объекту зачисления. Дополнительные сведения о том, как указать этот параметр, см. в разделе Параметр DesiredAccessобъекта ZwCreateEnlistment. Этот параметр не может быть равен нулю.

[in] RmHandle

Дескриптор объекта Resource Manager, полученный при предыдущем вызове ZwCreateResourceManager или ZwOpenResourceManager.

[in] EnlistmentGuid

Указатель на GUID, определяющий зачисление. Дополнительные сведения см. в разделе "Примечания".

[in, optional] ObjectAttributes

Указатель на структуру OBJECT_ATTRIBUTES , указывающую атрибуты объекта. Используйте подпрограмму InitializeObjectAttributes для инициализации этой структуры, но укажите только параметры InitializedAttributes и Attributes этой подпрограммы . Если вызывающий объект не выполняется в контексте системного потока, он должен установить флаг OBJ_KERNEL_HANDLE в параметре Attributes . Этот параметр является необязательным и может иметь значение NULL.

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

ZwOpenEnlistment возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае эта подпрограмма может возвращать одно из следующих значений:

Код возврата Описание
STATUS_INVALID_HANDLE
Недопустимый дескриптор объекта.
STATUS_ACCESS_DENIED
Вызывающий объект не имеет соответствующего доступа к объекту зачисления.
STATUS_INVALID_PARAMETER
Значение параметра DesiredAccess равно нулю или значение параметра EnlistmentGuid равно NULL.
STATUS_ENLISTMENT_NOT_FOUND
Перечисление, указанное параметром EnlistmentGuid , не существует для диспетчера ресурсов, указанного параметром RmHandle .
STATUS_ACCESS_DENIED
Недопустимое значение параметра DesiredAccess .
 

Подпрограмма может возвращать другие значения NTSTATUS.

Комментарии

Как правило, компонент TPS вызывает ZwOpenEnlistment после получения GUID зачисления от другого компонента TPS, который ранее назывался ZwCreateEnlistment. В большинстве проектов TPS не требуется вызывать ZwOpenEnlistment.

Диспетчер ресурсов, вызывающий ZwOpenEnlistment , должен в конечном итоге вызвать ZwClose , чтобы закрыть дескриптор объекта.

Дополнительные сведения о ZwOpenEnlistment см. в разделе Объекты enlistment.

NtOpenEnlistment и ZwOpenEnlistment — это две версии одной и той же подпрограммы windows Native System Services.

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

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционной системы.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

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

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

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

ZwClose

ZwCreateEnlistment

ZwCreateResourceManager

ZwOpenResourceManager

ZwQueryInformationEnlistment

ZwSetInformationEnlistment