FltEnlistInTransaction 関数 (fltkernel.h)
FltEnlistInTransaction ルーチンは、特定のトランザクションにミニフィルター ドライバーを参加させます。
構文
NTSTATUS FLTAPI FltEnlistInTransaction(
[in] PFLT_INSTANCE Instance,
[in] PKTRANSACTION Transaction,
[in] PFLT_CONTEXT TransactionContext,
[in] NOTIFICATION_MASK NotificationMask
);
パラメーター
[in] Instance
呼び出し元の不透明なインスタンス ポインター。 このパラメーターは必須であり、 NULL にすることはできません。
[in] Transaction
トランザクションの不透明なトランザクション ポインター。
[in] TransactionContext
ミニフィルター ドライバーのトランザクション コンテキストへのポインター。 このパラメーターは必須であり、 NULL にすることはできません。
[in] NotificationMask
フィルター マネージャーがミニフィルター ドライバーに送信する通知の種類を、次の表に示す 1 つ以上の値として指定します。 このパラメーターは必須であり、0 にすることはできません。
値 | 意味 |
---|---|
TRANSACTION_NOTIFY_COMMIT | この通知は、トランザクションがコミットされるときに送信されます。 |
TRANSACTION_NOTIFY_COMMIT_FINALIZE | Windows Vista SP1 以降の場合、この通知は、トランザクションが完全にコミットされたときに送信されます (つまり、TxF など、トランザクションに関連付けられているすべてのリソース マネージャーがコミットした場合)。 |
TRANSACTION_NOTIFY_PREPARE | この通知は、トランザクションがコミット準備フェーズに入ったときに送信されます。 |
TRANSACTION_NOTIFY_PREPREPARE | この通知は、トランザクションがコミットの事前準備フェーズに入ったときに送信されます。 |
TRANSACTION_NOTIFY_ROLLBACK | この通知は、トランザクションがロールバックまたは中止されるときに送信されます。 |
FLT_MAX_TRANSACTION_NOTIFICATIONS | TRANSACTION_NOTIFY_COMMIT |TRANSACTION_NOTIFY_PREPARE |TRANSACTION_NOTIFY_PREPREPARE |TRANSACTION_NOTIFY_ROLLBACK |
戻り値
FltEnlistInTransaction は、次のいずれかのSTATUS_SUCCESSまたは適切な NTSTATUS 値を返します。
リターン コード | 説明 |
---|---|
|
呼び出し元は既にトランザクションに参加しています。 これはエラー コードです。 |
|
Instance パラメーターで指定された インスタンス が破棄されています。 これはエラー コードです。 |
|
FltEnlistInTransaction でプール割り当てエラーが発生しました。 これはエラー コードです。 |
|
呼び出し元が TransactionNotificationCallback ルーチンを登録しませんでした。 これはエラー コードです。 |
|
呼び出し元が NotificationMask パラメーターに無効な値を指定しました。 これはエラー コードです。 |
注釈
ミニフィルター ドライバーは 、FltEnlistInTransaction を呼び出してトランザクションに参加させます。 FltEnlistInTransaction を呼び出す前に、ミニフィルター ドライバーで TransactionNotificationCallback ルーチンが登録されている必要があります。 それ以外の場合、 FltEnlistInTransaction の呼び出しは失敗します。
TransactionNotificationCallback ルーチンを登録するために、ミニフィルター ドライバーは、ミニフィルター ドライバーが FltRegisterFilter の Registration パラメーターとして渡すFLT_REGISTRATION構造体の TransactionNotificationCallback メンバーにPFLT_TRANSACTION_NOTIFICATION_CALLBACK型のルーチンのアドレスを格納します。
トランザクションをロールバックまたは中止するには、 FltRollbackEnlistment を呼び出します。
新しいトランザクション コンテキストを割り当てるには、 FltAllocateContext を呼び出します。
トランザクション コンテキストを取得するには、 FltGetTransactionContext を呼び出します。
トランザクション コンテキストを削除するには、 FltDeleteTransactionContext または FltDeleteContext を呼び出します。
トランザクション コンテキストを設定するには、 FltSetTransactionContext を呼び出します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | このルーチンは、Windows Vista 以降のバージョンの Windows で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (Fltkernel.h を含む) |
Library | FltMgr.lib |
[DLL] | FltMgr.sys |
IRQL | <= APC_LEVEL |