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
引数 パラメーターが指すバッファーの長さ (バイト単位)。 バッファーが使用できない場合、このパラメーターは 0 です。
[in] Argument
通知固有の引数を含むバッファーへのポインター。 TransactionNotification パラメーターで指定された通知に引数バッファーが必要ない場合、このパラメーターは NULL 。
追加の引数バッファーを含む通知の一覧については、TRANSACTION_NOTIFICATIONの「解説」セクションを参照してください。
戻り値
ResourceManagerNotification コールバック ルーチンは、操作が成功した場合、NT_SUCCESS(状態) が TRUE 等しいSTATUS_SUCCESSまたは別のステータス値を返す必要があります。
通常、リソース マネージャーは通知を同期的に処理する場合はSTATUS_SUCCESSを返し、通知を非同期的に処理する場合はSTATUS_PENDINGしますが、どちらの場合もSTATUS_PENDINGを返すことができます。 ただし、リソース マネージャーは、TmXxxComplete または ZwXxxComplete ルーチンのいずれかを呼び出すことによって応答する通知に対してのみ、STATUS_PENDINGを返すことができます。
つまり、リソース マネージャーが、TmXxxComplete または ZwXxxComplete ルーチンのいずれかを呼び出して通知に応答する必要がある場合、 通知のSTATUS_PENDINGを返し、後で適切な TmXxxComplete または ZwXxxComplete ルーチンを呼び出すことができます。
エラーが発生した場合、コールバック ルーチンは、NT_SUCCESS(status) が FALSE 等しい状態値を返す必要があります。
備考
ResourceManagerNotification コールバック ルーチンを登録するには、リソース マネージャーが TmEnableCallbacks 呼び出す必要があります。
ResourceManagerNotification コールバック ルーチンは、ハンドルではなく、参加オブジェクトへのポインターを受け取ります。 参加オブジェクトポインターを、参加オブジェクトの tmXxx ルーチン 渡すことができます。
ResourceManagerNotification コールバック ルーチンの詳細については、「Resource Managerの作成」を参照してください。
ResourceManagerNotification コールバック ルーチンは IRQL = PASSIVE_LEVEL で呼び出され、IRQL = PASSIVE_LEVEL で返される必要があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista 以降のオペレーティング システム バージョンで使用できます。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
IRQL | PASSIVE_LEVEL (「解説」セクションを参照) |
関連項目
TmEnableCallbacks の