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