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值,指定呼叫端對交易物件的要求存取權。 如需如何指定此參數的資訊,請參閱 ZwCreateTransactionDesiredAccess 參數。

[in, optional] ObjectAttributes

指定物件屬性 之OBJECT_ATTRIBUTES 結構的指標。 使用 InitializeObjectAttributes 例程來初始化這個結構,但只指定該例程的 InitializedAttributesAttributes 參數。 如果呼叫端未在系統線程內容中執行,則必須在 Attributes 參數中設定OBJ_KERNEL_HANDLE旗標。 ObjectAttributes 參數是選擇性的,而且可以是 NULL

[in] Uow

GUID 的指標,該 GUID 是交易物件的 工作單位, (UOW) 標識符。 此 GUID 會識別要開啟的交易物件。

[in, optional] TmHandle

交易管理員物件的句柄。 如果此參數不是 NULL,KTM 只會搜尋屬於指定之交易管理員物件的交易物件。 如果此參數為 NULL,KTM 會搜尋所有交易物件。

傳回值

如果作業成功,ZwCreateTransaction 會傳回STATUS_SUCCESS。 否則,此例程可能會傳回下列其中一個值:

傳回碼 Description
STATUS_INVALID_PARAMETER
DesiredAccessUow 參數為零。
STATUS_OBJECT_TYPE_MISMATCH
指定的句柄不是交易物件的句柄。
STATUS_INVALID_HANDLE
物件句柄無效。
STATUS_TRANSACTION_NOT_FOUND
KTM 找不到交易物件。
STATUS_ACCESS_DENIED
DesiredAccess 參數的值無效。
 

例程可能會傳回其他 NTSTATUS值

備註

一般而言,資源管理員會在收到先前稱為 ZwCreateTransaction 的交易用戶端收到交易 UOW 之後呼叫 ZwOpenTransaction

如需 ZwOpenTransaction 的詳細資訊,請參閱建立 Resource Manager

NtOpenTransactionZwOpenTransaction 是相同 Windows Native System Services 例程的兩個版本。

針對來自內核模式驅動程式的呼叫,Windows 原生系統服務例程的 NtXxxZwXxx 版本會以處理和解譯輸入參數的方式,以不同的方式運作。 如需 例程 NtXxxZwXxx 版本之間關聯性的詳細資訊,請參閱 使用原生系統服務例程的 Nt 和 Zw 版本

規格需求

需求
最低支援的用戶端 適用於 Windows Vista 和更新版本的作業系統版本。
目標平台 Universal
標頭 wdm.h (包括 Wdm.h、Ntifs.h)
程式庫 NtosKrnl.lib
Dll NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 合規性規則 HwStorPortProhibitedDDIs、PowerIrpDDis

另請參閱

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

使用 Nt 和 Zw 版本的原生系統服務例程

ZwCommitTransaction

ZwCreateTransaction

ZwQueryInformationTransaction

ZwRollbackTransaction