PTM_RM_NOTIFICATION コールバック関数 (wdm.h)
リソース マネージャーの ResourceManagerNotification コールバック ルーチンは、 トランザクション通知を受信して処理します。
構文
PTM_RM_NOTIFICATION PtmRmNotification;
NTSTATUS PtmRmNotification(
[in] PKENLISTMENT EnlistmentObject,
[in] PVOID RMContext,
[in] PVOID TransactionContext,
[in] ULONG TransactionNotification,
[in, out] PLARGE_INTEGER TmVirtualClock,
[in] ULONG ArgumentLength,
[in] PVOID Argument
)
{...}
パラメーター
[in] EnlistmentObject
参加オブジェクトへのポインター。 ResourceManagerNotification コールバック ルーチンは、このオブジェクトが表す参加に関する通知を受け取っています。
[in] RMContext
TmEnableCallbacks ルーチンの RMKey パラメーターに対してリソース マネージャーが以前に指定した値。
[in] TransactionContext
ZwCreateEnlistment ルーチンの EnlistmentKey パラメーターに対してリソース マネージャーが以前に指定した値。
[in] TransactionNotification
Ktmtypes.h で定義されているTRANSACTION_NOTIFY_XXX 値の 1 つ。 この値は、KTM が呼び出し元に送信したトランザクション通知の種類を指定します。
[in, out] TmVirtualClock
KTM がリソース マネージャーへの配信通知を準備した時点の 仮想クロック値 を含む場所へのポインター。 コールバック ルーチンが戻る前にこの値を増やすと、KTM は仮想クロックを新しい値に更新します。 (通常、リソース マネージャーは仮想クロック値を変更しません)。
[in] ArgumentLength
Argument パラメーターが指すバッファーの長さ (バイト単位)。 バッファーが使用できない場合、このパラメーターは 0 です。
[in] Argument
通知固有の引数を含むバッファーへのポインター。 TransactionNotification パラメーターが指定する通知に引数バッファーが必要ない場合、このパラメーターは NULL です。
追加の引数バッファーを含む通知の一覧については、 TRANSACTION_NOTIFICATIONの「解説」セクションを参照してください。
戻り値
ResourceManagerNotification コールバック ルーチンは、操作が成功した場合STATUS_SUCCESSまたは NT_SUCCESS(status) が TRUE に等しい別の状態値を返す必要があります。
通常、リソース マネージャーは通知を同期的に処理する場合はSTATUS_SUCCESSを返し、通知を非同期的に処理する場合はSTATUS_PENDINGしますが、どちらの場合もSTATUS_PENDINGを返すことができます。 ただし、リソース マネージャーは、TmXxxComplete ルーチンまたは Zw Xxx Complete ルーチンのいずれかを呼び出すことによって応答する通知に対してのみ、STATUS_PENDINGを返すことができます。
つまり、リソース マネージャーが TmXxxComplete ルーチンまたは ZwXxxComplete ルーチンのいずれかを呼び出して通知に応答する必要がある場合は、通知のSTATUS_PENDINGを返し、後で適切な TmXxxComplete または Zw Xxx Complete ルーチンを呼び出すことができます。
エラーが発生した場合、コールバック ルーチンは、NT_SUCCESS(status) が FALSE である状態値を返す必要があります。
注釈
ResourceManagerNotification コールバック ルーチンを登録するには、リソース マネージャーが TmEnableCallbacks を呼び出す必要があります。
ResourceManagerNotification コールバック ルーチンは、ハンドルではなく、参加オブジェクトへのポインターを受け取ります。 参加オブジェクト ポインターは、参加オブジェクトの TmXxx ルーチンに渡すことができます。
ResourceManagerNotification コールバック ルーチンの詳細については、「Resource Managerの作成」を参照してください。
ResourceManagerNotification コールバック ルーチンは IRQL = PASSIVE_LEVEL で呼び出され、IRQL = PASSIVE_LEVELで返される必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 以降のオペレーティング システム バージョンで使用できます。 |
対象プラットフォーム | デスクトップ |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |