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 값을 반환합니다.
반환 코드 | 설명 |
---|---|
|
호출자가 트랜잭션에 이미 등록되어 있습니다. 오류 코드입니다. |
|
Instance 매개 변수에 지정된 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에서 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | fltkernel.h(Fltkernel.h 포함) |
라이브러리 | FltMgr.lib |
DLL | FltMgr.sys |
IRQL | <= APC_LEVEL |