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

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

Синтаксис

__kernel_entry NTSYSCALLAPI NTSTATUS NtPrePrepareEnlistment(
  [in]           HANDLE         EnlistmentHandle,
  [in, optional] PLARGE_INTEGER TmVirtualClock
);

Параметры

[in] EnlistmentHandle

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

[in, optional] TmVirtualClock

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

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

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

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

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

Комментарии

Вызывать ZwPrePrepareEnlistment могут только диспетчеры транзакций более высокого звена.

Вызывающие ZwPrePrepareEnlistment должны зарегистрироваться для получения уведомлений TRANSACTION_NOTIFY_PREPREPARE_COMPLETE.

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

Дополнительные сведения о ZwPrePrepareEnlistment см. в разделах Создание превосходного диспетчера транзакций и Обработка операций фиксации.

NtPrepareEnlistment и ZwPrepareEnlistment — это две версии одной и той же подпрограммы системных служб Windows Native.

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

Требования

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

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

TmPrePrepareEnlistment

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

ZwCreateEnlistment

ZwOpenEnlistment