ZwCreateTransactionManager 関数 (wdm.h)

ZwCreateTransactionManager ルーチンは、新しいトランザクション マネージャー オブジェクトを作成します。

構文

NTSYSCALLAPI NTSTATUS ZwCreateTransactionManager(
  [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 トランザクション マネージャーに関する情報を取得します ( 「ZwQueryInformationTransactionManager 」および「 ZwEnumerateTransactionObject」を参照)。 ZwOpenResourceManagerZwCreateTransactionおよび ZwOpenTransaction にも必要です)。
TRANSACTIONMANAGER_RECOVER トランザクション マネージャーを復旧します ( ZwRecoverTransactionManagerZwRollforwardTransactionManager を参照)。
TRANSACTIONMANAGER_RENAME 使用されていません。
TRANSACTIONMANAGER_SET_INFORMATION 使用されていません。
 

または、次の ACCESS_MASK ビットマップの 1 つ以上を指定することもできます。 これらのビットマップは、前の表のフラグと、ACCESS_MASK参照ページで説明されているSTANDARD_RIGHTS_XXX フラグを組み合わせます。 これらのビットマップを、前の表の追加フラグと組み合わせることもできます。 次の表は、ビットマップが特定のアクセス権にどのように対応するかを示しています。

権限ビットマップ 特定のアクセス権のセット
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

トランザクション・マネージャー・オブジェクトに関連付ける CLFS ログ・ファイル・ストリームのパスとファイル名を含むUNICODE_STRING構造体へのポインター。 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

将来利用するために予約されています。 このパラメーターは 0 である必要があります。

戻り値

操作が成功した場合、ZwCreateTransactionManager はSTATUS_SUCCESSを返します。 それ以外の場合、このルーチンは次のいずれかの値を返す可能性があります。

リターン コード 説明
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 ネイティブ システム サービス ルーチンの 2 つのバージョンです。

カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Vista 以降のオペレーティング システム バージョンで使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

こちらもご覧ください

InitializeObjectAttributes

OBJECT_ATTRIBUTES

UNICODE_STRING

Nt および Zw バージョンのネイティブ システム サービス ルーチンの使用

ZwClose

ZwOpenTransactionManager

ZwQueryInformationTransactionManager

ZwRecoverTransactionManager

ZwRollforwardTransactionManager