다음을 통해 공유


FltAttachVolume 함수(fltkernel.h)

FltAttachVolume은 instance 새 미니필터 드라이버를 만들고 지정된 볼륨에 연결합니다.

구문

NTSTATUS FLTAPI FltAttachVolume(
  [in, out]      PFLT_FILTER      Filter,
  [in, out]      PFLT_VOLUME      Volume,
  [in, optional] PCUNICODE_STRING InstanceName,
  [out]          PFLT_INSTANCE    *RetInstance
);

매개 변수

[in, out] Filter

호출자에 대한 불투명 필터 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[in, out] Volume

미니필터 드라이버가 연결할 instance 볼륨에 대한 불투명 볼륨 포인터입니다. 이 매개 변수는 필수이며 NULL일 수 없습니다.

[in, optional] InstanceName

instance 대한 instance 이름을 포함하는 UNICODE_STRING 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다. NULL인 경우 FltAttachVolume은 레지스트리에서 미니필터 드라이버의 기본 instance 이름을 읽으려고 시도합니다. (이 매개 변수에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.)

[out] RetInstance

새로 만든 instance 대한 불투명 instance 포인터를 수신하는 호출자가 할당한 변수에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다.

반환 값

FltAttachVolume 은 STATUS_SUCCESS 또는 다음 중 하나와 같은 적절한 NTSTATUS 값을 반환합니다.

반환 코드 설명
STATUS_FLT_DELETING_OBJECT
지정한 필터 또는 볼륨 이 삭제되고 있습니다. 오류 코드입니다.
STATUS_FLT_FILTER_NOT_READY
미니필터 드라이버가 필터링을 시작하지 않았습니다. 자세한 내용은 FltStartFiltering을 참조하세요. 오류 코드입니다.
STATUS_FLT_INSTANCE_NAME_COLLISION
지정된 볼륨에 이 이름을 가진 instance 이미 있습니다.
STATUS_INSUFFICIENT_RESOURCES
FltAttachVolume 에서 풀 할당 오류가 발생했습니다. 오류 코드입니다.
STATUS_OBJECT_NAME_COLLISION
다른 instance 레지스트리에서 읽은 instance 특성에 지정된 고도에 이미 연결되었습니다. 오류 코드입니다.

설명

호출자가 InstanceNameNULL이 아닌 값을 지정하는 경우 FltAttachVolume은 레지스트리에 저장된 미니필터 드라이버가 지정한 모든 instance 특성을 HKLM\CurrentControlSet\Services\ServiceName\Instances\InstanceName에서 읽습니다. 여기서 ServiceName은 미니필터 드라이버의 서비스 이름입니다. 이 서비스 이름은 미니필터 드라이버의 INF 파일의 DefaultInstall.Services 섹션에 있는 AddService 지시문에 지정됩니다. (필터 드라이버 INF 파일에 대한 자세한 내용은 파일 시스템 필터 드라이버 설치를 참조하세요.)

호출자가 InstanceName 값을 지정하지 않으면 FltAttachVolume은 레지스트리 경로의 InstanceName 부분에 대해 HKLM\CurrentControlSet\Services\ServiceName\Instances\DefaultInstance 아래에 레지스트리에 저장된 이름을 사용합니다.

InstanceName 매개 변수에 지정된 instance 이름은 시스템 전체에서 고유해야 합니다.

FltAttachVolume*RetInstance의 새 instance 대한 불투명 instance 포인터를 반환합니다. 이 포인터 값은 미니필터 드라이버 instance 고유하게 식별하며 instance 볼륨에 연결되어 있는 한 일정하게 유지됩니다.

FltAttachVolume*RetInstance에서 반환된 불투명 instance 포인터에 대한 런다운 참조를 추가합니다. 이 포인터가 더 이상 필요하지 않으면 호출자는 FltObjectDereference를 호출하여 해제해야 합니다. 따라서 FltAttachVolume 에 대한 모든 성공적인 호출은 FltObjectDereference에 대한 후속 호출과 일치해야 합니다.

지정된 고도의 볼륨에 미니필터 드라이버 instance 연결하려면 FltAttachVolumeAtAltitude를 호출합니다.

동일한 볼륨에 연결된 두 개의 미니필터 드라이버 인스턴스의 고도를 비교하려면 FltCompareInstanceAltitudes를 호출합니다.

볼륨에서 instance 미니필터 드라이버를 분리하려면 FltDetachVolume을 호출합니다.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
IRQL PASSIVE_LEVEL

추가 정보

FltAttachVolumeAtAltitude

FltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

FltStartFiltering

UNICODE_STRING