FltSetStreamHandleContext 함수(fltkernel.h)

FltSetStreamHandleContext 루틴은 스트림 핸들에 대한 컨텍스트를 설정합니다.

구문

NTSTATUS FLTAPI FltSetStreamHandleContext(
  [in]            PFLT_INSTANCE             Instance,
  [in]            PFILE_OBJECT              FileObject,
  [in]            FLT_SET_CONTEXT_OPERATION Operation,
  [in]            PFLT_CONTEXT              NewContext,
  [out, optional] PFLT_CONTEXT              *OldContext
);

매개 변수

[in] Instance

스트림 핸들에 연결된 컨텍스트 목록에서 컨텍스트를 삽입, 제거 또는 바꿀 미니필터 드라이버 instance 대한 불투명 instance 포인터입니다.

[in] FileObject

파일 스트림에 대한 파일 개체 에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[in] Operation

수행할 작업의 세부 정보를 지정하는 플래그입니다. 이 매개 변수는 다음 중 하나여야 합니다.

의미
FLT_SET_CONTEXT_REPLACE_IF_EXISTS 인스턴스에 대해 컨텍스트가 이미 설정된 경우 FltSetStreamHandleContext이를 NewContext에 지정된 컨텍스트로 바꿉니다. 그렇지 않으면 스트림 핸들의 컨텍스트 목록에 NewContext 를 삽입합니다.
FLT_SET_CONTEXT_KEEP_IF_EXISTS 인스턴스에 대한 컨텍스트가 이미 설정된 경우 FltSetStreamHandleContext 는 STATUS_FLT_CONTEXT_ALREADY_DEFINED 반환하고 기존 컨텍스트를 대체하거나 참조 수를 증가시키지 않습니다. 컨텍스트가 아직 설정되지 않은 경우 루틴은 스트림 핸들의 컨텍스트 목록에 NewContext 를 삽입하고 참조 수를 증분합니다.

[in] NewContext

스트림 핸들에 대해 설정할 새 컨텍스트에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[out, optional] OldContext

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

반환 값

FltSetStreamHandleContext 루틴은 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 파일 시스템이 이 파일 스트림에 대한 스트림별 컨텍스트를 지원하지 않거나 호출자가 NULL FileObject를 제공하는 등 지원되지 않는 상황이 발생했습니다.

설명

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

FltSetStreamHandleContext 루틴은 스트림 핸들에서 instance 미니필터 드라이버에 대한 컨텍스트를 추가, 제거 또는 대체합니다. 미니필터 드라이버는 instance 미니필터 드라이버당 하나의 컨텍스트를 스트림 핸들에 연결할 수 있습니다.

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

참조 계산

FltSetStreamHandleContext가 성공하면 다음을 수행합니다.

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

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

  • NewContext의 참조 수는 변경되지 않습니다.
  • OldContextNULL이 아니고 NULL_CONTEXT 가리키지 않는 경우 OldContext는 현재 스트림 핸들과 연결된 컨텍스트에 대한 참조된 포인터입니다. 컨텍스트 포인터가 더 이상 필요하지 않은 경우 FltSetStreamHandleContext를 호출하는 필터는 OldContext에 대해 FltReleaseContext를 호출해야 합니다.

성공에 관계없이:

  • FltSetStreamHandleContext를 호출하는 필터는 FltAllocateContext에 의해 증가된 NewContext 개체의 참조 수를 감소시키는 FltReleaseContext를 호출해야 합니다.

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

기타 컨텍스트 작업

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

요구 사항

요구 사항
지원되는 최소 클라이언트 SP4, Windows XP SP2, Windows Server 2003 SP1 이상 운영 체제용 Microsoft Windows 2000 업데이트 롤업 1에서 사용 가능하고 지원됩니다.
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 Fltmgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

추가 정보

FltAllocateContext

FltDeleteContext

FltDeleteStreamHandleContext

FltGetStreamHandleContext

FltReleaseContext