다음을 통해 공유


FltGetDiskDeviceObject 함수(fltkernel.h)

FltGetDiskDeviceObject 루틴은 지정된 볼륨과 연결된 디스크 디바이스 개체에 대한 포인터를 반환합니다.

구문

NTSTATUS FLTAPI FltGetDiskDeviceObject(
  [in]  PFLT_VOLUME    Volume,
  [out] PDEVICE_OBJECT *DiskDeviceObject
);

매개 변수

[in] Volume

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

[out] DiskDeviceObject

디바이스 개체 포인터를 수신하는 호출자가 할당한 변수에 대한 포인터입니다. 오류 발생시 이 매개 변수는 수정되지 않습니다.

반환 값

FltGetDiskDeviceObject 는 STATUS_SUCCESS 또는 다음과 같은 적절한 NTSTATUS 값을 반환합니다.

반환 코드 설명
STATUS_FLT_NO_DEVICE_OBJECT 지정된 볼륨에 대해 요청된 디바이스 개체가 없습니다. 오류 코드입니다.

설명

FltGetDiskDeviceObject 는 볼륨이 있는 실제 디스크의 스토리지 디바이스 개체에 대한 포인터를 검색합니다. 스토리지 디바이스는 실제 디스크일 필요가 없습니다.

FltGetDiskDeviceObjectDiskDeviceObject에서 반환된 디바이스 개체 포인터에 대한 참조 횟수를 증가합니다. 이 포인터가 더 이상 필요하지 않은 경우 호출자는 ObDereferenceObject를 호출하여 이 참조 수를 감소시켜야 합니다. 이렇게 하지 않으면 시스템이 미해결 참조로 인해 디바이스 개체를 해제하거나 삭제할 수 없습니다. 따라서 FltGetDiskDeviceObject에 대한 모든 성공적인 호출은 ObDereferenceObject에 대한 후속 호출과 일치해야 합니다.

미니필터는 I/O 관련 콜백에서만 FltGetDiskDeviceObject 를 호출해야 합니다. 그렇지 않으면 반환된 디바이스 개체의 필드가 유효하지 않을 수 있습니다. InstanceTeardownStartCallback 및InstanceTeardownCompleteCallback과 같은 콜백 루틴의 경우입니다.

지정된 볼륨에 대한 Filter Manager의 VDO(볼륨 디바이스 개체)에 대한 포인터를 얻으려면 FltGetDeviceObject를 호출합니다.

볼륨 디바이스 개체가 나타내는 볼륨에 대한 불투명 볼륨 포인터를 얻으려면 FltGetVolumeFromDeviceObject를 호출합니다.

볼륨 디바이스 개체에 대한 자세한 내용은 파일 시스템 스택을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 fltkernel.h(Fltkernel.h 포함)
라이브러리 Fltmgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

추가 정보

FltGetDeviceObject

FltGetVolumeFromDeviceObject

ObDereferenceObject

ObReferenceObject