FltSetStreamContext 함수(fltkernel.h)
FltSetStreamContext 루틴은 파일 스트림에 대한 컨텍스트를 설정합니다.
통사론
NTSTATUS FLTAPI FltSetStreamContext(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out] PFLT_CONTEXT *OldContext
);
매개 변수
[in] Instance
파일 스트림에 연결된 컨텍스트 목록에서 컨텍스트를 삽입, 제거 또는 바꿀 미니 필터 드라이버 인스턴스에 대한 불투명 인스턴스 포인터입니다.
[in] FileObject
[in] Operation
수행할 작업의 세부 정보를 지정하는 플래그입니다. 이 매개 변수는 다음 중 하나여야 합니다.
기 | 의미 |
---|---|
FLT_SET_CONTEXT_REPLACE_IF_EXISTS | 인스턴스대해 컨텍스트가 이미 설정된 경우 FltSetStreamContextNewContext지정된 컨텍스트로 바뀝니다. 그렇지 않으면 파일 스트림의 컨텍스트 목록에 NewContext 삽입합니다. |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | 이 인스턴스대한 컨텍스트가 이미 설정된 경우 FltSetStreamContext STATUS_FLT_CONTEXT_ALREADY_DEFINED 반환하고 기존 컨텍스트를 대체하거나 참조 수를 증가시키지 않습니다. 컨텍스트가 아직 설정되지 않은 경우 루틴은 NewContext 파일 스트림의 컨텍스트 목록에 삽입하고 참조 수를 증분합니다. |
[in] NewContext
파일 스트림에 대해 설정할 새 컨텍스트에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL 수 없습니다.
[out] OldContext
이미 설정된 경우 Instance 매개 변수에 대한 기존 스트림 컨텍스트의 주소를 수신하는 호출자 할당 변수에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL 수 있습니다. 이 매개 변수에 대한 자세한 내용은 다음 주의 섹션을 참조하세요.
반환 값
FltSetStreamContext 루틴은 STATUS_SUCCESS 또는 다음 중 하나와 같은 적절한 NTSTATUS 값을 반환합니다.
반환 코드 | 묘사 |
---|---|
STATUS_FLT_CONTEXT_ALREADY_DEFINED | 작업대해 FLT_SET_CONTEXT_KEEP_IF_EXISTS 지정한 경우 이 오류 코드는 스트림 컨텍스트가 파일 스트림에 이미 연결되어 있음을 나타냅니다. |
STATUS_FLT_CONTEXT_ALREADY_LINKED | NewContext 매개 변수가 가리키는 컨텍스트가 이미 개체에 연결되어 있습니다. 즉, 이 오류 코드는 FltSetXxx컨텍스트 루틴의 성공적인 사전 호출로 인해 NewContext 이미 사용 중임을 나타냅니다. |
STATUS_FLT_DELETING_OBJECT | 인스턴스 매개 변수에 지정된 인스턴스가 삭제되고 있습니다. 오류 코드입니다. |
STATUS_INVALID_PARAMETER | 잘못된 매개 변수가 전달되었습니다. 예를 들어 NewContext 매개 변수가 유효한 스트림 컨텍스트를 가리키지 않거나 Operation 매개 변수에 잘못된 값이 지정되었습니다. 오류 코드입니다. |
STATUS_NOT_SUPPORTED | 파일 시스템은 이 파일 스트림에 대한 스트림별 컨텍스트를 지원하지 않습니다. 오류 코드입니다. |
발언
컨텍스트에 대한 자세한 내용은 미니 필터 컨텍스트 정보참조하세요.
미니 필터 드라이버는 FltSetStreamContext 호출하여 스트림 컨텍스트를 파일 스트림에 연결하거나 기존 스트림 컨텍스트를 제거하거나 대체합니다. 미니 필터 드라이버는 파일 스트림에 미니 필터 드라이버 인스턴스당 하나의 컨텍스트를 연결할 수 있습니다.
FltSetStreamContext 미개봉 FileObject호출할 수 없습니다. 따라서 스트림이 해당 시점에 열리지 않았기 때문에 스트림에 대한 사전 만들기 콜백에서 호출할 수 없습니다. 그러나 미니 필터 드라이버는 사전 만들기 콜백에서 스트림 컨텍스트를 할당하고 설정하고, 완료 컨텍스트 매개 변수를 사용하여 사후 생성 콜백에 전달하고, 사후 생성 콜백에서 스트림의 스트림 컨텍스트를 설정할 수 있습니다.
참조 계산
FltSetStreamContext 성공하면 다음을 수행합니다.
- NewContext 대한 참조 수가 증가합니다. NewContext 더 이상 필요하지 않은 경우 미니 필터는 FltReleaseContext 호출하여 참조 횟수를 줄여야 합니다.
그렇지 않으면 FltSetStreamContext 실패합니다.
- NewContext 대한 참조 수는 변경되지 않은 상태로 유지됩니다.
- OldContext NULL 않고 NULL_CONTEXT 가리키지 않는 경우 OldContext 스트림과 현재 연결된 컨텍스트에 대한 참조 포인터입니다. FltSetStreamContext 호출하는 필터는 컨텍스트 포인터가 더 이상 필요하지 않은 경우 OldContextFltReleaseContext 호출해야 합니다.
성공에 관계없이:
- FltSetStreamContext 호출하는 필터는 FltReleaseContext 호출하여 FltAllocateContext증가된 NewContext 개체에 대한 참조 수를 줄여야 합니다.
기타 컨텍스트 작업
자세한 내용은 컨텍스트 설정 및 컨텍스트 해제 참조하세요.
지정된 파일에 대해 스트림 컨텍스트가 지원되는지 여부를 확인하려면 FltSupportsStreamContexts
새 컨텍스트를 할당하려면 FltAllocateContext호출합니다.
스트림 컨텍스트를 얻으려면 FltGetStreamContext호출합니다.
스트림 컨텍스트를 삭제하려면 FltDeleteStreamContext 또는 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 |