TmCreateEnlistment 関数 (wdm.h)
TmCreateEnlistment ルーチンは、トランザクションの新しい参加オブジェクトを作成します。
構文
NTSTATUS TmCreateEnlistment(
[out] PHANDLE EnlistmentHandle,
[in] KPROCESSOR_MODE PreviousMode,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in] PRKRESOURCEMANAGER ResourceManager,
[in] PKTRANSACTION Transaction,
[in, optional] ULONG CreateOptions,
[in] NOTIFICATION_MASK NotificationMask,
[in, optional] PVOID EnlistmentKey
);
パラメーター
[out] EnlistmentHandle
TmCreateEnlistment の呼び出しが成功した場合に、新しい参加オブジェクトへのハンドルを受け取る呼び出し元によって割り当てられた変数へのポインター。
[in] PreviousMode
参加ハンドルを使用して参加オブジェクトにアクセスするプロセスのプロセッサ モード。 この値は UserMode または KernelMode である必要があります。
[in] DesiredAccess
呼 び 出し元が要求した参加オブジェクトへのアクセスを指定するACCESS_MASK値。 このパラメーターの詳細については、ZwCreateEnlistment の DesiredAccess パラメーターの説明を参照してください。
[in] ObjectAttributes
オブジェクト名とその他の属性を指定する OBJECT_ATTRIBUTES 構造体へのポインター。 この構造体を初期化するには、 InitializeObjectAttributes ルーチンを使用します。 呼び出し元がシステム スレッド コンテキストで実行されていない場合は、 InitializeObjectAttributes を呼び出すときにOBJ_KERNEL_HANDLE属性を設定する必要があります。 このパラメーターは省略可能であり、 NULL にすることができます。
[in] ResourceManager
リソース マネージャー オブジェクトへのポインター。 このポインターを取得するには、コンポーネントで ObReferenceObjectByHandle を呼び出し、 前に ZwCreateResourceManager または ZwOpenResourceManager を呼び出したオブジェクト ハンドルを指定する必要があります。
[in] Transaction
トランザクション オブジェクトへのポインター。 このポインターを取得するには、コンポーネントで ObReferenceObjectByHandle を呼び出し、 前に ZwCreateTransaction または ZwOpenTransaction を呼び出したオブジェクト ハンドルを指定する必要があります。 KTM は、呼び出し元のリソース マネージャーが処理しているトランザクションの一覧にこのトランザクションを追加します。
[in, optional] CreateOptions
参加オプション フラグ。 次の表に、使用可能なフラグのみを示します。
CreateOptions フラグ | 意味 |
---|---|
ENLISTMENT_SUPERIOR | 呼び出し元は、指定された トランザクションの上位のトランザクション マネージャー として参加しています。 |
このパラメーターは省略可能であり、0 にすることができます。
[in] NotificationMask
Ktmtypes.h で定義されているTRANSACTION_NOTIFY_XXX 値のビットごとの OR。 このマスク値は、KTM が呼び出し元に送信する トランザクション通知 の種類を指定します。
[in, optional] EnlistmentKey
参加リストを一意に識別する呼び出し元定義情報へのポインター。 リソース マネージャーは、 ZwGetNotificationResourceManager を呼び出すとき、または KTM が ResourceManagerNotification コールバック ルーチンを呼び出すときに、このポインターを受け取ります。 リソース マネージャーは、 TmReferenceEnlistmentKey と TmDereferenceEnlistmentKey を 呼び出すことによって、このキーの参照カウント を維持できます。 このパラメーターは省略可能であり、 NULL にすることができます。
戻り値
TmCreateEnlistment は、操作が成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合、このルーチンは次のいずれかの値を返す可能性があります。
リターン コード | 説明 |
---|---|
|
CreateOptions パラメーターまたは NotificationMask パラメーターの値が無効であるか、または TRANSACTION パラメーターで指定されたトランザクションが KTM で見つかりませんでした。 |
|
メモリ割り当てに失敗しました。 |
|
KTM またはリソース マネージャーが操作状態でないため、参加に失敗しました。 |
|
Transaction パラメーターが指定するトランザクションがアクティブでないため、参加に失敗しました。 |
|
呼び出し元は 上位のトランザクション マネージャー として登録しようとしましたが、優れた参加リストは既に存在します。 |
|
呼び出し元は上位のトランザクション マネージャーとして登録しようとしていますが、呼び出し元のリソース マネージャー オブジェクトは 揮発性 ですが、関連付けられているトランザクション マネージャー オブジェクトは揮発性ではありません。 |
|
DesiredAccess パラメーターの値が無効です。 |
ルーチンは、他の NTSTATUS 値を返す場合があります。
注釈
TmCreateEnlistment ルーチンは、ZwCreateEnlistment ルーチンのポインター ベースのバージョンです。
Zw Xxx ルーチンの代わりに KTM の TmXxx ルーチンを使用する場合の詳細については、「TmXxx ルーチンの使用」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のオペレーティング システム バージョンで使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |