FltEnlistInTransaction 함수(fltkernel.h)

FltEnlistInTransaction 루틴은 지정된 트랜잭션에 미니필터 드라이버를 참여합니다.

구문

NTSTATUS FLTAPI FltEnlistInTransaction(
  [in] PFLT_INSTANCE     Instance,
  [in] PKTRANSACTION     Transaction,
  [in] PFLT_CONTEXT      TransactionContext,
  [in] NOTIFICATION_MASK NotificationMask
);

매개 변수

[in] Instance

호출자에 대한 불투명 instance 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[in] Transaction

트랜잭션에 대한 불투명 트랜잭션 포인터입니다.

[in] TransactionContext

미니필터 드라이버의 트랜잭션 컨텍스트에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[in] NotificationMask

필터 관리자가 미니필터 드라이버에 보낼 알림 유형을 다음 표에 나열된 값 중 하나 이상으로 지정합니다. 이 매개 변수는 필수이며 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 값을 반환합니다.

반환 코드 설명
STATUS_FLT_ALREADY_ENLISTED
호출자가 트랜잭션에 이미 등록되어 있습니다. 오류 코드입니다.
STATUS_FLT_DELETING_OBJECT
Instance 매개 변수에 지정된 instance 삭제되고 있습니다. 오류 코드입니다.
STATUS_INSUFFICIENT_RESOURCES
FltEnlistInTransaction 에서 풀 할당 오류가 발생했습니다. 오류 코드입니다.
STATUS_INVALID_PARAMETER
호출자가 TransactionNotificationCallback 루틴을 등록하지 않았습니다. 오류 코드입니다.
STATUS_INVALID_PARAMETER_4
호출자가 NotificationMask 매개 변수에 잘못된 값을 지정했습니다. 오류 코드입니다.

설명

미니필터 드라이버는 FltEnlistInTransaction 을 호출하여 트랜잭션에 참여합니다. FltEnlistInTransaction을 호출하기 전에 미니필터 드라이버가 TransactionNotificationCallback 루틴을 등록해야 합니다. 그렇지 않으면 FltEnlistInTransaction 에 대한 호출이 실패합니다.

TransactionNotificationCallback 루틴을 등록하기 위해 미니필터 드라이버는 미니필터 드라이버가 FltRegisterFilterRegistration 매개 변수로 전달하는 FLT_REGISTRATION 구조체의 TransactionNotificationCallback 멤버에 PFLT_TRANSACTION_NOTIFICATION_CALLBACK 형식의 루틴 주소를 저장합니다.

트랜잭션을 롤백하거나 중단하려면 FltRollbackEnlistment를 호출합니다.

새 트랜잭션 컨텍스트를 할당하려면 FltAllocateContext를 호출합니다.

트랜잭션 컨텍스트를 검색하려면 FltGetTransactionContext를 호출합니다.

트랜잭션 컨텍스트를 삭제하려면 FltDeleteTransactionContext 또는 FltDeleteContext를 호출합니다.

트랜잭션 컨텍스트를 설정하려면 FltSetTransactionContext를 호출합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 이 루틴은 Windows Vista 이상 버전의 Windows에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
DLL FltMgr.sys
IRQL <= APC_LEVEL

추가 정보

FltAllocateContext

FltCommitComplete

FltDeleteContext

FltDeleteTransactionContext

FltGetTransactionContext

FltPrePrepareComplete

FltPrepareComplete

FltRegisterFilter

FltReleaseContext

FltRollbackComplete

FltRollbackEnlistment

FltSetTransactionContext

PFLT_TRANSACTION_NOTIFICATION_CALLBACK