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

인스턴스 매개 변수가 가리키는 인스턴스에 대한 기존 파일 컨텍스트의 주소를 수신하는 호출자 할당 변수에 대한 포인터입니다(이미 설정된 경우). 이 매개 변수는 선택 사항이며 NULL 일 수 있습니다. 이 매개 변수에 대한 자세한 내용은 다음 주의 섹션을 참조하세요.

반환 값

FltSetFileContext 루틴은 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 매개 변수에 대해 잘못된 값을 지정했습니다. 오류 코드입니다.
STATUS_NOT_SUPPORTED 이 파일에는 파일 컨텍스트가 지원되지 않습니다. 오류 코드입니다.

설명

컨텍스트에 대한 자세한 내용은 미니 필터 컨텍스트 정보를 참조하세요.

미니 필터 드라이버는 FltSetFileContext 를 호출하여 파일에서 자체 파일 컨텍스트를 설정하거나 대체합니다. 미니 필터 드라이버는 미니 필터 드라이버 인스턴스당 하나의 컨텍스트만 파일에 연결할 수 있습니다.

열지 않은 FileObject 에서는 FltSetFileContext 를 호출할 수 없습니다. 따라서 해당 시점에서 파일이 열리지 않았기 때문에 파일에 대한 미리 만들기 콜백에서 FltSetFileContext 를 호출할 수 없습니다. 그러나 미니 필터 드라이버는 사전 만들기 콜백에서 파일 컨텍스트를 할당하고 설정하고, 완성 컨텍스트 매개 변수를 사용하여 사후 생성 콜백에 전달하고, 생성 후 콜백의 해당 스트림에 해당하는 파일에 파일 컨텍스트를 설정할 수 있습니다.

참조 계산

FltSetFileContext 가 성공하는 경우:

  • NewContext 의 참조 수가 증가합니다. NewContext 가 더 이상 필요하지 않은 경우 미니 필터는 FltReleaseContext를 호출하여 참조 수를 감소시켜야 합니다.

그렇지 않으면 FltSetFileContext가 실패합니다.

  • NewContext 의 참조 수는 변경되지 않은 상태로 유지됩니다.
  • OldContextNULL 이 아니고 NULL_CONTEXT 가리키지 않는 경우 OldContext 는 현재 파일과 연결된 컨텍스트에 대한 참조된 포인터입니다. 컨텍스트 포인터가 더 이상 필요하지 않은 경우 FltSetFileContext 를 호출하는 필터는 결국 OldContextFltReleaseContext 를 호출해야 합니다.

성공에 관계없이 다음을 수행합니다.

자세한 내용은 컨텍스트 참조를 참조하세요.

기타 컨텍스트 작업

자세한 내용은 컨텍스트 설정컨텍스트 해제를 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista부터 사용 가능하고 지원됩니다.
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 Fltmgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

참고 항목

FLT_CONTEXT_REGISTRATION

FltAllocateContext

FltDeleteContext

FltDeleteFileContext

FltGetFileContext

FltReleaseContext

FltSupportsFileContexts

FltSupportsFileContextsEx