FltSetTransactionContext 함수(fltkernel.h)
FltSetTransactionContext 루틴은 트랜잭션에 대한 컨텍스트를 설정합니다.
구문
NTSTATUS FLTAPI FltSetTransactionContext(
[in] PFLT_INSTANCE Instance,
[in] PKTRANSACTION Transaction,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out, optional] PFLT_CONTEXT *OldContext
);
매개 변수
[in] Instance
호출자에 대한 불투명 인스턴스 포인터입니다.
[in] Transaction
컨텍스트가 설정되는 트랜잭션에 대한 불투명 트랜잭션 포인터입니다.
[in] Operation
수행할 작업의 세부 정보를 지정하는 플래그입니다. 이 매개 변수는 다음 중 하나여야 합니다.
| 플래그 | 의미 |
|---|---|
| FLT_SET_CONTEXT_REPLACE_IF_EXISTS | Transaction 매개 변수가 가리키는 트랜잭션에 대해 컨텍스트가 이미 설정된 경우 FltSetTransactionContext 는 이를 NewContext 매개 변수가 가리키는 컨텍스트로 바꿉니다. 그렇지 않으면 NewContext 매개 변수가 가리키는 컨텍스트를 Transaction 매개 변수가 가리키는 트랜잭션의 컨텍스트로 설정합니다. |
| FLT_SET_CONTEXT_KEEP_IF_EXISTS | Transaction 매개 변수가 가리키는 트랜잭션에 대해 컨텍스트가 이미 설정된 경우 FltSetTransactionContext 는 STATUS_FLT_CONTEXT_ALREADY_DEFINED 반환하고 기존 컨텍스트를 대체하거나 참조 수를 증가시키지 않습니다. 컨텍스트가 아직 설정되지 않은 경우 이 루틴은 NewContext 매개 변수가 가리키는 컨텍스트를 Transaction 매개 변수가 가리키는 트랜잭션의 컨텍스트로 설정하고 참조 횟수를 증가합니다. |
[in] NewContext
트랜잭션에 대해 설정할 새 컨텍스트에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL 일 수 없습니다.
[out, optional] OldContext
이미 설정된 경우 기존 트랜잭션 컨텍스트의 주소를 수신하는 호출자 할당 변수에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL 일 수 있습니다. 이 매개 변수에 대한 자세한 내용은 다음 주의 섹션을 참조하세요.
반환 값
FltSetTransactionContext 는 STATUS_SUCCESS 또는 다음 중 하나와 같은 적절한 NTSTATUS 값을 반환합니다.
| 반환 코드 | 설명 |
|---|---|
| STATUS_FLT_CONTEXT_ALREADY_DEFINED | Operation 매개 변수에 대해 FLT_SET_CONTEXT_KEEP_IF_EXISTS 지정한 경우 이 오류 코드는 컨텍스트가 트랜잭션에 이미 연결되어 있음을 나타냅니다. 지정된 미니 필터 드라이버의 트랜잭션에는 하나의 컨텍스트만 연결할 수 있습니다. |
| STATUS_FLT_CONTEXT_ALREADY_LINKED | NewContext 매개 변수가 가리키는 컨텍스트가 이미 개체에 연결되어 있습니다. 즉, 이 오류 코드는 FltSetXxxContext 루틴의 성공적인 이전 호출로 인해 NewContext 가 이미 사용 중임을 나타냅니다. |
| STATUS_FLT_DELETING_OBJECT | |
| 인스턴스 매개 변수에 지정된 인스턴스 가 삭제되고 있습니다. 오류 코드입니다. | |
| STATUS_INVALID_PARAMETER | 잘못된 매개 변수가 전달되었습니다. 예를 들어 NewContext 매개 변수는 유효한 트랜잭션 컨텍스트를 가리키지 않거나 Operation 매개 변수에 대해 잘못된 값을 지정했습니다. 오류 코드입니다. |
설명
컨텍스트에 대한 자세한 내용은 미니 필터 컨텍스트 정보를 참조하세요.
미니 필터 드라이버는 FltSetTransactionContext 를 호출하여 트랜잭션에 컨텍스트를 연결하거나 기존 트랜잭션 컨텍스트를 제거하거나 대체합니다. 미니 필터 드라이버는 지정된 트랜잭션에 하나의 컨텍스트만 연결할 수 있습니다.
참조 계산
FltSetTransactionContext 가 성공하는 경우:
- NewContext 의 참조 수가 증가합니다. NewContext 가 더 이상 필요하지 않은 경우 미니 필터는 FltReleaseContext를 호출하여 참조 수를 줄여야 합니다.
그렇지 않으면 FltSetTransactionContext가 실패합니다.
- NewContext 의 참조 수는 변경되지 않습니다.
- OldContext 가 NULL 이 아니고 NULL_CONTEXT 가리키지 않는 경우 OldContext 는 현재 트랜잭션과 연결된 컨텍스트에 대한 참조된 포인터입니다. 컨텍스트 포인터가 더 이상 필요하지 않은 경우 FltSetTransactionContext 를 호출하는 필터는 OldContext 에 대해 FltReleaseContext 를 호출해야 합니다.
성공에 관계없이 다음을 수행합니다.
- FltSetTransactionContext 를 호출하는 필터는 FltReleaseContext를 호출하여 FltAllocateContext에 의해 증가된 NewContext 개체의 참조 수를 줄여야 합니다.
자세한 내용은 컨텍스트 참조를 참조하세요.
기타 컨텍스트 작업
자세한 내용은 컨텍스트 설정 및 컨텍스트 해제를 참조하세요.
- 새 컨텍스트를 할당하려면 FltAllocateContext를 호출합니다.
트랜잭션 컨텍스트를 얻으려면 FltGetTransactionContext를 호출합니다.
- 트랜잭션 컨텍스트를 삭제하려면 FltDeleteTransactionContext 또는 FltDeleteContext를 호출합니다.
요구 사항
| 지원되는 최소 클라이언트 | Windows Vista 이상 운영 체제에서 사용 가능하고 지원됩니다. |
| 대상 플랫폼 | 유니버설 |
| 헤더 | fltkernel.h(Fltkernel.h 포함) |
| 라이브러리 | FltMgr.lib |
| DLL | FltMgr.sys |
| IRQL | <= APC_LEVEL. |
참고 항목
피드백
다음에 대한 사용자 의견 제출 및 보기