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


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

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

Синтаксис

__kernel_entry NTSYSCALLAPI NTSTATUS NtOpenTransaction(
  [out]          PHANDLE            TransactionHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
  [in]           LPGUID             Uow,
  [in, optional] HANDLE             TmHandle
);

Параметры

[out] TransactionHandle

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

[in] DesiredAccess

Значение ACCESS_MASK , указывающее запрошенный доступ вызывающего объекта к объекту транзакции. Сведения о том, как указать этот параметр, см. в разделе Параметр DesiredAccessобъекта ZwCreateTransaction.

[in, optional] ObjectAttributes

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

[in] Uow

Указатель на GUID, который является идентификатором единицы работы объекта транзакции (UOW). Этот GUID идентифицирует объект транзакции для открытия.

[in, optional] TmHandle

Дескриптор объекта диспетчера транзакций. Если этот параметр не имеет значение NULL, KTM выполняет поиск только объектов транзакций, принадлежащих указанному объекту диспетчера транзакций. Если этот параметр имеет значение NULL, KTM выполняет поиск по всем объектам транзакций.

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

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

Код возврата Описание
STATUS_INVALID_PARAMETER
Параметр DesiredAccess или Uow равен нулю.
STATUS_OBJECT_TYPE_MISMATCH
Указанный дескриптор не является дескриптором объекта транзакции.
STATUS_INVALID_HANDLE
Недопустимый дескриптор объекта.
STATUS_TRANSACTION_NOT_FOUND
KTM не удалось найти объект транзакции.
STATUS_ACCESS_DENIED
Недопустимое значение параметра DesiredAccess .
 

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

Комментарии

Как правило, диспетчер ресурсов вызывает ZwOpenTransaction после получения UOW транзакции от транзакционного клиента, который ранее назывался ZwCreateTransaction.

Дополнительные сведения о ZwOpenTransaction см. в разделе Создание Resource Manager.

NtOpenTransaction и ZwOpenTransaction — это две версии одной и той же подпрограммы системных служб 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

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

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

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

ZwCommitTransaction

ZwCreateTransaction

ZwQueryInformationTransaction

ZwRollbackTransaction