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


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

Подпрограмма ZwRecoverEnlistment инициирует операцию восстановления для транзакции, связанной с указанным зачислением.

Синтаксис

__kernel_entry NTSYSCALLAPI NTSTATUS NtRecoverEnlistment(
  [in]           HANDLE EnlistmentHandle,
  [in, optional] PVOID  EnlistmentKey
);

Параметры

[in] EnlistmentHandle

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

[in, optional] EnlistmentKey

Указатель на значение ключа зачисления, которое диспетчер ресурсов ранее указал в качестве параметра EnlistmentKey для ZwCreateEnlistment. Этот параметр является необязательным и может иметь значение NULL , если диспетчер ресурсов не предоставил ключ зачисления при вызове ZwCreateEnlistment.

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

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

Код возврата Описание
STATUS_OBJECT_TYPE_MISMATCH
Указанный дескриптор не является дескриптором для объекта зачисления.
STATUS_INVALID_HANDLE
Недопустимый дескриптор объекта.
STATUS_TRANSACTION_REQUEST_NOT_VALID
Транзакция или ее зачисление находится в неправильном состоянии.
STATUS_PENDING
KTM добавил уведомление о фиксации, откате или сомнительном состоянии в очередь уведомлений диспетчера ресурсов, и диспетчер ресурсов не использует подпрограмму обратного вызова ResourceManagerNotification .
STATUS_ACCESS_DENIED
Вызывающий объект не имеет соответствующего доступа к объекту зачисления.
 

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

Комментарии

Когда диспетчер ресурсов вызывает ZwRecoverEnlistment, KTM отправляет уведомление TRANSACTION_NOTIFY_COMMIT, TRANSACTION_NOTIFY_ROLLBACK или TRANSACTION_NOTIFY_INDOUBT для зачисления. Поэтому, если диспетчер ресурсов не использует подпрограмму обратного вызова ResourceManagerNotification , он должен немедленно вызвать ZwGetNotificationResourceManager , если ZwRecoverEnlistment возвращает STATUS_SUCCESS или STATUS_PENDING.

Дополнительные сведения о ZwRecoverEnlistment см. в разделе Обработка операций восстановления.

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

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

Требования

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

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

ResourceManagerNotification

TmRecoverEnlistment

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

ZwCreateEnlistment

ZwGetNotificationResourceManager

ZwOpenEnlistment