NtCreateTransactionManager 函式 (wdm.h)

ZwCreateTransactionManager 例程會建立新的交易管理員物件。

語法

__kernel_entry NTSYSCALLAPI NTSTATUS NtCreateTransactionManager(
  [out]          PHANDLE            TmHandle,
  [in]           ACCESS_MASK        DesiredAccess,
  [in, optional] POBJECT_ATTRIBUTES ObjectAttributes,
  [in, optional] PUNICODE_STRING    LogFileName,
  [in, optional] ULONG              CreateOptions,
  [in, optional] ULONG              CommitStrength
);

參數

[out] TmHandle

呼叫端配置的變數指標,可接收新 交易管理員物件的句柄。

[in] DesiredAccess

ACCESS_MASK值,指定呼叫端對交易管理員物件的要求存取權。 除了針對所有類型的物件所定義的訪問許可權, (請參閱 ACCESS_MASK) ,呼叫端還可以指定下列任何交易管理員物件的存取權旗標。

ACCESS_MASK旗標 允許呼叫端
TRANSACTIONMANAGER_CREATE_RM 建立資源管理員 (請參閱 ZwCreateResourceManager) 。
TRANSACTIONMANAGER_QUERY_INFORMATION 取得交易管理員 (的資訊,請參閱 ZwQueryInformationTransactionManagerZwEnumerateTransactionObject) 。 ZwOpenResourceManagerZwCreateTransactionZwOpenTransaction.)
TRANSACTIONMANAGER_RECOVER 復原交易管理員 (請參閱 ZwRecoverTransactionManagerZwRollforwardTransactionManager) 。
TRANSACTIONMANAGER_RENAME 未使用。
TRANSACTIONMANAGER_SET_INFORMATION 未使用。
 

或者,您可以指定下列一或多個 ACCESS_MASK 位圖。 這些點陣圖會將上表中的旗標與ACCESS_MASK參考頁面上所述的STANDARD_RIGHTS_XXX 旗標結合。 您也可以將這些點陣圖與上表的其他旗標結合。 下表顯示位圖如何對應至特定訪問許可權。

Rights bitmap 一組特定的訪問許可權
TRANSACTIONMANAGER_GENERIC_READ STANDARD_RIGHTS_READ和TRANSACTIONMANAGER_QUERY_INFORMATION
TRANSACTIONMANAGER_GENERIC_WRITE STANDARD_RIGHTS_WRITE、TRANSACTIONMANAGER_SET_INFORMATION、TRANSACTIONMANAGER_RECOVER、TRANSACTIONMANAGER_RENAME和TRANSACTIONMANAGER_CREATE_RM
TRANSACTIONMANAGER_GENERIC_EXECUTE STANDARD_RIGHTS_EXECUTE
TRANSACTIONMANAGER_ALL_ACCESS STANDARD_RIGHTS_REQUIRED、TRANSACTIONMANAGER_GENERIC_READ、TRANSACTIONMANAGER_GENERIC_WRITE和TRANSACTIONMANAGER_GENERIC_EXECUTE

[in, optional] ObjectAttributes

指定物件名稱和其他屬性 之OBJECT_ATTRIBUTES 結構的指標。 使用 InitializeObjectAttributes 例程來初始化這個結構。 如果呼叫端未在系統線程內容中執行,它必須在呼叫 InitializeObjectAttributes 時設定OBJ_KERNEL_HANDLE屬性。 此參數是選擇性的,可以是 NULL

[in, optional] LogFileName

UNICODE_STRING 結構的指標,其中包含要與交易管理員對象相關聯的CLFS記錄檔數據流路徑和檔名。 如果 CreateOptions 參數TRANSACTION_MANAGER_VOLATILE,這個參數必須是 NULL。 否則,此參數必須是非 NULL。 如需詳細資訊,請參閱接下來的<備註>一節。

[in, optional] CreateOptions

選擇性的物件建立旗標。 下表包含可在 Ktmtypes.h 中定義的可用旗標。

選項旗標 意義
TRANSACTION_MANAGER_VOLATILE 交易管理員物件將會是變動性。 因此,它不會使用記錄檔。
TRANSACTION_MANAGER_COMMIT_DEFAULT 僅供內部使用。
TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME 僅供內部使用。
TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES 僅供內部使用。
TRANSACTION_MANAGER_COMMIT_LOWEST 僅供內部使用。
TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY 僅供內部使用。
TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS 僅供內部使用。

[in, optional] CommitStrength

保留供未來使用。 此參數必須是零。

傳回值

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

傳回碼 Description
STATUS_INVALID_PARAMETER
輸入參數的值無效。
STATUS_INSUFFICIENT_RESOURCES
KTM 無法配置系統資源, (通常是記憶體) 。
STATUS_LOG_CORRUPTION_DETECTED
KTM 在建立或開啟記錄檔時發生錯誤。
STATUS_INVALID_ACL
安全性描述項包含無效的訪問控制清單, (ACL) 。
STATUS_INVALID_SID
安全性描述項包含無效的安全性標識碼 (SID) 。
STATUS_OBJECT_NAME_EXISTS
ObjectAttributes 參數指定的物件名稱已經存在。
STATUS_OBJECT_NAME_COLLISION
操作系統偵測到重複的物件名稱。 此錯誤可能表示正在使用記錄數據流。
STATUS_OBJECT_NAME_INVALID
ObjectAttributes 參數指定的物件名稱無效。
STATUS_ACCESS_DENIED
DesiredAccess 參數的值無效。
 

例程可能會傳回其他 NTSTATUS值

備註

如果 LogFileName 參數指定的記錄檔數據流不存在,KTM 會呼叫 CLFS 來建立數據流。 如果數據流已經存在,KTM 會呼叫 CLFS 來開啟數據流。

TPS 元件在呼叫 ZwCreateTransactionManager 之後,必須呼叫 ZwRecoverTransactionManager

如果您的 TPS 元件在 CreateOptions 參數中指定TRANSACTION_MANAGER_VOLATILE旗標,則與交易管理員對象相關聯的所有資源管理員都必須在呼叫 ZwCreateResourceManager 時指定RESOURCE_MANAGER_VOLATILE旗標。

呼叫 ZwCreateTransactionManager 的 TPS 元件最終必須呼叫 ZwClose 以關閉物件句柄。

如需如何使用 ZwCreateTransactionManager 的詳細資訊,請參閱建立 Resource Manager

NtCreateTransactionManagerZwCreateTransactionManager 是相同 Windows 原生系統服務例程的兩個版本。

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

規格需求

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

另請參閱

InitializeObjectAttributes

OBJECT_ATTRIBUTES

UNICODE_STRING

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

ZwClose

ZwOpenTransactionManager

ZwQueryInformationTransactionManager

ZwRecoverTransactionManager

ZwRollforwardTransactionManager