次の方法で共有


NtPrepareEnlistment 関数 (wdm.h)

ZwPrepareEnlistment ルーチンは、指定された参加リストのトランザクションの準備操作を開始します。

構文

__kernel_entry NTSYSCALLAPI NTSTATUS NtPrepareEnlistment(
  [in]           HANDLE         EnlistmentHandle,
  [in, optional] PLARGE_INTEGER TmVirtualClock
);

パラメーター

[in] EnlistmentHandle

ZwCreateEnlistment または ZwOpenEnlistment の以前の呼び出しによって取得された 参加オブジェクト へのハンドル。 オブジェクトは 優れた参加 を表す必要があり、ハンドルはオブジェクトにENLISTMENT_SUPERIOR_RIGHTSアクセスできる必要があります。

[in, optional] TmVirtualClock

仮想クロック値へのポインター。 このパラメーターは省略可能であり、NULL できます。

戻り値

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

リターン コード 形容
STATUS_ENLISTMENT_NOT_SUPERIOR
呼び出し元は、参加 優れたトランザクション マネージャー ではありません。
STATUS_TRANSACTION_RESPONSE_NOT_ENLISTED
呼び出し元は、TRANSACTION_NOTIFY_PREPARE_COMPLETE通知を受信するために登録しませんでした。
STATUS_OBJECT_TYPE_MISMATCH
指定されたハンドルは、参加オブジェクトへのハンドルではありません。
STATUS_INVALID_HANDLE
オブジェクト ハンドルが無効です。
STATUS_ACCESS_DENIED
呼び出し元には、参加オブジェクトへの適切なアクセス権がありません。
STATUS_TRANSACTION_REQUEST_NOT_VALID
参加リストのトランザクションは、準備フェーズに入る状態ではありません。
 

ルーチンは、NTSTATUS 値を返す場合があります。

備考

ZwPrepareEnlistment 呼び出すことができるのは、優れたトランザクション マネージャーだけです。

ZwPrepareEnlistment ルーチンにより、KTM はトランザクションに参加しているすべてのリソース マネージャーにTRANSACTION_NOTIFY_PREPARE通知を送信します。

ZwPrepareEnlistment の呼び出し元は、TRANSACTION_NOTIFY_PREPARE_COMPLETE通知を受信するために登録する必要があります。

ZwPrepareEnlistment の詳細については、「優れたトランザクション マネージャー の作成とコミット操作の処理 を参照してください。

NtPrePrepareEnlistment と ZwPrePrepareEnlistment は、同じ Windows ネイティブ システム サービス ルーチンの 2 つのバージョンです。

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

必要条件

要件 価値
サポートされる最小クライアント Windows Vista 以降のオペレーティング システム バージョンで使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する HwStorPortProhibitedDIs、PowerIrpDDis

関連項目

TmPrepareEnlistment する

ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンを使用した

ZwCreateEnlistment

ZwOpenEnlistment