共用方式為


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。 否則,此例程可能會傳回下列其中一個值:

傳回碼 描述
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 原生系統服務例程的兩個版本。

對於內核模式驅動程式的呼叫,NtXxxZwXxx 版本的 Windows 原生系統服務例程,在處理和解譯輸入參數的方式上可能會有不同的行為。 如需 nt NtXxxZwXxx 例程之間關聯性的詳細資訊,請參閱 使用 Nt 和 Zw 版本的原生系統服務例程

要求

要求 價值
最低支援的用戶端 適用於 Windows Vista 和更新版本的作系統版本。
目標平臺 普遍
標頭 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