FltSetVolumeContext 함수(fltkernel.h)

FltSetVolumeContext 는 볼륨에 대한 컨텍스트를 설정합니다.

구문

NTSTATUS FLTAPI FltSetVolumeContext(
  [in]            PFLT_VOLUME               Volume,
  [in]            FLT_SET_CONTEXT_OPERATION Operation,
  [in]            PFLT_CONTEXT              NewContext,
  [out, optional] PFLT_CONTEXT              *OldContext
);

매개 변수

[in] Volume

볼륨에 대한 불투명 볼륨 포인터입니다.

[in] Operation

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

플래그 의미
FLT_SET_CONTEXT_REPLACE_IF_EXISTS 컨텍스트가 이미 Volume에 대해 설정된 경우 FltSetVolumeContext이를 NewContext>로 대체합니다. 그렇지 않으면 볼륨의 컨텍스트 목록에 NewContext 를 삽입합니다.
FLT_SET_CONTEXT_KEEP_IF_EXISTS 이 볼륨에 대해 컨텍스트가 이미 설정된 경우 FltSetVolumeContext 는 STATUS_FLT_CONTEXT_ALREADY_DEFINED 반환하고 기존 컨텍스트를 대체하거나 참조 수를 증가시키지 않습니다. 컨텍스트가 아직 설정되지 않은 경우 루틴은 볼륨의 컨텍스트 목록에 NewContext 를 삽입하고 참조 수를 증분합니다.

[in] NewContext

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

[out, optional] OldContext

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

반환 값

FltSetVolumeContext 는 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에 잘못된 값을 지정했습니다. 오류 코드입니다.

설명

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

미니필터 드라이버는 FltSetVolumeContext 를 호출하여 볼륨에 컨텍스트를 연결하거나 기존 볼륨 컨텍스트를 제거하거나 대체합니다. 미니필터 드라이버는 하나의 컨텍스트만 볼륨에 연결할 수 있습니다.

참조 계산

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

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

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

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

성공에 관계없이:

  • FltSetVolumeContext를 호출하는 필터는 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

FltDeleteVolumeContext

FltGetVolumeContext

FltReleaseContext