다음을 통해 공유


FltAttachVolumeAtAltitude 함수(fltkernel.h)

FltAttachVolumeAtAltitude 미니 필터 드라이버 인스턴스를 지정된 고도의 볼륨에 연결하여 미니 필터 드라이버의 INF 파일의 모든 설정을 재정의하는 디버깅 지원 루틴입니다.

통사론

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

매개 변수

[in, out] Filter

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

[in, out] Volume

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

[in] Altitude

인스턴스의 고도 문자열을 포함하는 UNICODE_STRING 구조체에 대한 포인터입니다. 이 매개 변수는 필수이며 NULL 수 없습니다. (이 매개 변수에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.)

[in, optional] InstanceName

새 인스턴스의 인스턴스 이름을 포함하는 UNICODE_STRING 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 NULL 수 있습니다. NULL 경우 FltAttachVolumeAtAltitude 미니 필터 드라이버 이름 및 고도 가리키는 고도 문자열에서 인스턴스 이름을 생성합니다. 필요한 경우 생성된 이름이 잘려 문자를 INSTANCE_NAME_MAX_CHARS.

[out, optional] RetInstance

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

반환 값

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

반환 코드 묘사
STATUS_FLT_DELETING_OBJECT
지정된 필터 또는 볼륨 삭제되고 있습니다. 오류 코드입니다.
STATUS_FLT_FILTER_NOT_READY
미니 필터 드라이버가 필터링을 시작하지 않았습니다. 자세한 내용은 fltStartFiltering 참조하세요. 오류 코드입니다.
STATUS_FLT_INSTANCE_ALTITUDE_COLLISION
지정된 볼륨의 이 고도에 인스턴스가 이미 있습니다. 오류 코드입니다.
STATUS_FLT_INSTANCE_NAME_COLLISION
지정된 볼륨에 이 이름을 가진 인스턴스가 이미 있습니다. 오류 코드입니다.
STATUS_INSUFFICIENT_RESOURCES
FltAttachVolumeAtAltitude 풀 할당 오류가 발생했습니다. 오류 코드입니다.
STATUS_INVALID_PARAMETER
고도 가리키는 UNICODE_STRING 구조체에 유효한 고도 문자열이 포함되어 있지 않습니다. 오류 코드입니다.

발언

미니 필터 드라이버는 디버깅에 FltAttachVolumeAtAltitude 사용해야 합니다. 미니 필터 드라이버의 소매 버전에서는 이 루틴을 호출해서는 안 됩니다.

FltAttachVolumeAtAltitude Win32 FilterAttachAtAltitude 함수와 동일한 커널입니다.

"고도"라는 용어는 볼륨에 대한 미니 필터 드라이버 인스턴스 스택에서 인스턴스가 차지하거나 차지해야 하는 위치를 나타냅니다. 고도가 높을수록 인스턴스가 스택의 기본 파일 시스템에서 더 멀리 떨어져 있습니다. 지정된 볼륨의 지정된 고도에서 하나의 인스턴스만 연결할 수 있습니다.

고도는 0에서 9까지의 10진수를 하나 이상 포함하는 와이드 문자 배열인 고도 문자열의해 지정됩니다. 배열에는 단일 소수점이 포함될 수 있습니다. 예를 들어 "100.123456" 및 "03333"은 유효한 고도 문자열입니다.

문자열 "03333"은 "100.123456"보다 높은 고도를 나타냅니다(선행 및 후행 0은 무시됨). 즉, 고도가 "03333"인 인스턴스는 고도가 "100.123456"인 인스턴스보다 기본 파일 시스템에서 더 멀리 떨어져 있습니다. 그러나 이 비교는 두 인스턴스가 동일한 볼륨에 연결된 경우에만 의미가 있습니다.

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

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

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

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

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

요구 사항

요구
대상 플랫폼 보편적
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 FltMgr.lib
IRQL PASSIVE_LEVEL

참고 항목

filterAttachAtAltitude

FltAttachVolume

fltCompareInstanceAltitudes

FltDetachVolume

FltGetVolumeInstanceFromName

FltObjectDereference

fltStartFiltering

UNICODE_STRING