FltSetFileContext 함수(fltkernel.h)
FltSetFileContext 루틴은 파일의 컨텍스트를 설정합니다.
통사론
NTSTATUS FLTAPI FltSetFileContext(
[in] PFLT_INSTANCE Instance,
[in] PFILE_OBJECT FileObject,
[in] FLT_SET_CONTEXT_OPERATION Operation,
[in] PFLT_CONTEXT NewContext,
[out] PFLT_CONTEXT *OldContext
);
매개 변수
[in] Instance
호출자의 미니 필터 드라이버 인스턴스에 대한 불투명 포인터입니다. 이 매개 변수는 필수이며 NULL 수 없습니다.
[in] FileObject
파일에 대한 파일 개체 대한 포인터입니다. 이 매개 변수는 필수이며 NULL 수 없습니다.
[in] Operation
수행할 FltSetFileContext 작업 유형을 지정하는 플래그입니다. 이 매개 변수는 다음 플래그 중 하나여야 합니다.
기 | 의미 |
---|---|
FLT_SET_CONTEXT_REPLACE_IF_EXISTS | FileObject 매개 변수가 가리키는 파일에 대한 컨텍스트가 이미 설정된 경우 FltSetFileContext 해당 컨텍스트를 NewContext지정된 컨텍스트로 바꿉니다. 그렇지 않으면 NewContext 파일의 컨텍스트 목록에 삽입합니다. |
FLT_SET_CONTEXT_KEEP_IF_EXISTS | FileObject가 가리키는 파일에 대한 컨텍스트가 이미 설정된 경우 FltSetFileContext STATUS_FLT_CONTEXT_ALREADY_DEFINED 반환하고 기존 컨텍스트를 대체하거나 참조 수를 증가시키지 않습니다. 컨텍스트가 아직 설정되지 않은 경우 루틴은 NewContext 지정된 컨텍스트를 파일의 컨텍스트 목록에 삽입하고 참조 수를 증분합니다. |
[in] NewContext
파일에 대해 설정할 새 컨텍스트에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL 수 없습니다.
[out] OldContext
Instance 매개 변수가 가리키는 인스턴스에 대한 기존 파일 컨텍스트의 주소를 받는 호출자 할당 변수에 대한 포인터입니다(이미 설정된 경우). 이 매개 변수는 선택 사항이며 NULL 수 있습니다. 이 매개 변수에 대한 자세한 내용은 다음 주의 섹션을 참조하세요.
반환 값
FltSetFileContext 루틴은 STATUS_SUCCESS 또는 다음 중 하나와 같은 적절한 NTSTATUS 값을 반환합니다.
반환 코드 | 묘사 |
---|---|
STATUS_FLT_CONTEXT_ALREADY_DEFINED | Operation 매개 변수에 대해 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 | 이 파일에는 파일 컨텍스트가 지원되지 않습니다. 오류 코드입니다. |
발언
컨텍스트에 대한 자세한 내용은 미니 필터 컨텍스트 정보참조하세요.
미니 필터 드라이버는 FltSetFileContext 호출하여 파일의 자체 파일 컨텍스트를 설정하거나 대체합니다. 미니 필터 드라이버는 미니 필터 드라이버 인스턴스당 하나의 컨텍스트만 파일에 연결할 수 있습니다.
FltSetFileContext 미개봉 FileObject호출할 수 없습니다. 따라서 FltSetFileContext 해당 시점에 파일이 열리지 않았기 때문에 파일에 대한 사전 만들기 콜백에서 호출할 수 없습니다. 그러나 미니 필터 드라이버는 사전 만들기 콜백에서 파일 컨텍스트를 할당하고 설정하고, 완료 컨텍스트 매개 변수를 사용하여 사후 만들기 콜백에 전달하고, 생성 후 콜백의 해당 스트림에 해당하는 파일에 파일 컨텍스트를 설정할 수 있습니다.
참조 계산
FltSetFileContext 성공하는 경우:
- NewContext 대한 참조 수가 증가합니다. NewContext 더 이상 필요하지 않은 경우 미니 필터는 FltReleaseContext 호출하여 참조 횟수를 줄여야 합니다.
그렇지 않으면 FltSetFileContext 실패합니다.
- NewContext 대한 참조 수는 변경되지 않은 상태로 유지됩니다.
- OldContext NULL 않고 NULL_CONTEXT 가리키지 않는 경우 oldContext 현재 파일과 연결된 컨텍스트에 대한 참조 포인터입니다. FltSetFileContext 호출하는 필터는 컨텍스트 포인터가 더 이상 필요하지 않은 경우 OldContext 대한 FltReleaseContext 호출해야 합니다.
성공에 관계없이:
- fltSetFileContext 호출하는 필터는 FltReleaseContext 호출하여 FltAllocateContext증가된 NewContext 개체의 참조 수를 줄여야 합니다.
기타 컨텍스트 작업
자세한 내용은 컨텍스트 설정 및 컨텍스트 해제 참조하세요.
새 컨텍스트를 할당하려면 FltAllocateContext호출합니다.
파일 컨텍스트를 얻으려면 FltGetFileContext호출합니다.
파일 컨텍스트를 삭제하려면 FltDeleteFileContext 또는 fltDeleteContext호출합니다.
지정된 파일에 대해 파일 컨텍스트가 지원되는지 여부를 확인하려면 FltSupportsFileContexts 또는 FltSupportsFileContextsEx호출합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista부터 사용 가능하고 지원됩니다. |
대상 플랫폼 | 보편적 |
헤더 | fltkernel.h(Fltkernel.h 포함) |
라이브러리 | Fltmgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |