IRP_MJ_QUERY_VOLUME_INFORMATION(FS 및 필터 드라이버)

보낸 경우

I/O 관리자가 IRP_MJ_QUERY_VOLUME_INFORMATION 요청을 보냅니다. 예를 들어 사용자 모드 애플리케이션이 GetDiskFreeSpace 또는 GetFileType과 같은 Win32 함수를 호출한 경우 전송할 수 있습니다.

작업: 파일 시스템 드라이버

파일 시스템 드라이버는 파일 개체를 추출하고 디코딩하여 대상 디바이스 개체가 파일 시스템의 제어 디바이스 개체인지 확인해야 합니다. 볼륨이 열려 있거나 볼륨의 개체가 열려 있는 핸들에서 요청이 실행된 경우 파일 시스템 드라이버는 요청을 처리하고 IRP를 완료해야 합니다.

그렇지 않으면 파일 시스템 드라이버가 쿼리에 실패하고 IRP를 완료해야 합니다.

쿼리할 수 있는 볼륨 정보 유형은 파일 시스템에 따라 달라지지만 일반적으로 다음 값을 포함합니다.

  • FileFsAttributeInformation
  • FileFsDeviceInformation
  • FileFsSizeInformation
  • FileFsVolumeInformation

가능한 모든 정보 유형 목록은 IrpSp-Parameters.QueryVolume.FsInformationClass>를 참조하세요.

작업: 네트워크 리디렉션 드라이버

FileFsDeviceInformation에 대한 요청을 수신하는 네트워크 리디렉터는 반환된 FILE_FS_DEVICE_INFORMATION 구조체의 DeviceCharacteristics 멤버에 대한 옵션 중 하나로 FILE_REMOTE_DEVICE 포함해야 합니다.

작업: 레거시 파일 시스템 필터 드라이버

필터 드라이버는 이 IRP를 스택의 다음 하위 드라이버로 전달해야 합니다.

매개 변수

파일 시스템 또는 필터 드라이버는 지정된 IRP에 대해 IoGetCurrentIrpStackLocation 을 호출하여 IRP의 자체 스택 위치에 대한 포인터를 가져옵니다. 다음 매개 변수에서 IrpIRP 를 가리키고 IrpSpIO_STACK_LOCATION 가리킵니다. 드라이버는 IRP 및 IRP 스택 위치의 다음 멤버에 설정된 정보를 사용하여 쿼리 볼륨 정보 요청을 처리할 수 있습니다.

  • DeviceObject 는 대상 디바이스 개체에 대한 포인터입니다.

  • Irp->ASSOCIATedIrp.SystemBuffer 는 볼륨 정보가 반환될 시스템 제공 출력 버퍼를 가리킵니다. 이 정보는 다음 구조 중 하나에 저장됩니다.

    • FILE_FS_ATTRIBUTE_INFORMATION
    • FILE_FS_CONTROL_INFORMATION
    • FILE_FS_DEVICE_INFORMATION
    • FILE_FS_DRIVER_PATH_INFORMATION
    • FILE_FS_FULL_SIZE_INFORMATION
    • FILE_FS_OBJECTID_INFORMATION
    • FILE_FS_SIZE_INFORMATION
    • FILE_FS_VOLUME_FLAGS_INFORMATION
    • FILE_FS_VOLUME_INFORMATION
    • FILE_FS_SECTOR_SIZE_INFORMATION

    FileFsVolumeFlagsInformation 클래스 및 연결된 FILE_FS_VOLUME_INFORMATION 구조체는 Windows Vista 이상 버전에서 사용할 수 있습니다.

  • Irp->IoStatus는 최종 완료 상태 수신하는 IO_STATUS_BLOCK 구조와 요청된 작업에 대한 정보를 가리킵니다.

  • Irp->UserBuffer는 I/O 관리자가 I/O를 완료하는 동안 Irp-AssociatedIrp.SystemBuffer>의 콘텐츠가 복사되는 호출자 제공 출력 버퍼에 대한 선택적 포인터입니다. 드라이버는 이 버퍼를 사용하여 요청에 대한 데이터를 반환하지 않습니다.

  • IrpSp->FileObjectDeviceObject와 연결된 파일 개체를 가리킵니다.

    IrpSp-FileObject> 매개 변수에는 FILE_OBJECT 구조인 RelatedFileObject 필드에 대한 포인터가 포함되어 있습니다. FILE_OBJECT 구조체의 RelatedFileObject 필드는 IRP_MJ_QUERY_VOLUME_INFORMATION 처리하는 동안 유효하지 않으므로 사용하면 안 됩니다.

  • IrpSp->MajorFunctionIRP_MJ_QUERY_VOLUME_INFORMATION 설정됩니다.

  • IrpSp->Parameters.QueryVolume.FsInformationClass 는 파일 시스템에서 반환할 볼륨 정보의 유형입니다. 이 멤버는 다음 값 중 하나일 수 있습니다.

의미
FileFsAttributeInformation 볼륨을 담당하는 파일 시스템에 대한 특성 정보를 포함하는 FILE_FS_ATTRIBUTE_INFORMATION 구조를 반환합니다.
FileFsControlInformation 볼륨에 대한 파일 시스템 제어 정보를 포함하는 FILE_FS_CONTROL_INFORMATION 구조를 반환합니다.
FileFsDeviceInformation 볼륨에 대한 디바이스 정보를 포함하는 FILE_FS_DEVICE_INFORMATION 구조를 반환합니다.
FileFsDriverPathInformation 지정된 드라이버가 볼륨의 I /O 경로에 있는지 여부에 대한 정보를 포함하는 FILE_FS_DRIVER_PATH_INFORMATION 구조를 반환합니다. IRP_MJ_QUERY_VOLUME_INFORMATION 요청의 시작자는 IRP를 파일 시스템 볼륨 디바이스 스택으로 보내기 전에 드라이버의 이름을 FILE_FS_DRIVER_PATH_INFORMATION 구조에 저장해야 합니다.
FileFsFullSizeInformation 볼륨에서 사용할 수 있는 총 공간 양에 대한 정보를 포함하는 FILE_FS_FULL_SIZE_INFORMATION 구조를 반환합니다.
FileFsObjectIdInformation 볼륨에 대한 파일 시스템별 개체 ID 정보를 포함하는 FILE_FS_OBJECTID_INFORMATION 구조를 반환합니다. 이 개체 ID 정보는 운영 체제에서 할당한 (GUID 기반) 고유 볼륨 이름과 다릅니다.
FileFsSizeInformation IRP_MJ_QUERY_VOLUME_INFORMATION 요청을 시작한 스레드와 연결된 사용자가 사용할 수 있는 볼륨의 공간 양에 대한 정보가 포함된 FILE_FS_SIZE_INFORMATION 구조를 반환합니다.
FileFsVolumeInformation 볼륨 레이블, 일련 번호 및 생성 시간과 같은 볼륨에 대한 정보가 포함된 FILE_FS_VOLUME_INFORMATION 반환합니다.
FileFsSectorSizeInformation 볼륨의 물리적 및 논리적 섹터 크기에 대한 정보를 포함하는 FILE_FS_SECTOR_SIZE_INFORMATION 구조를 반환합니다.
  • IrpSp->Parameters.QueryVolume.Length 는 Irp-UserBuffer가 가리키는 버퍼의 길이(바이트 )>입니다. 반환 시 이 변수는 버퍼에 기록된 바이트 수를 받습니다.

추가 정보

FILE_FS_ATTRIBUTE_INFORMATION

FILE_FS_CONTROL_INFORMATION

FILE_FS_DEVICE_INFORMATION

FILE_FS_DRIVER_PATH_INFORMATION

FILE_FS_FULL_SIZE_INFORMATION

FILE_FS_OBJECTID_INFORMATION

FILE_FS_SECTOR_SIZE_INFORMATION

FILE_FS_SIZE_INFORMATION

FILE_FS_VOLUME_INFORMATION

IO_STACK_LOCATION

IO_STATUS_BLOCK

IoGetCurrentIrpStackLocation

IRP

IRP_MJ_SET_VOLUME_INFORMATION

ZwQueryVolumeInformationFile

ZwSetVolumeInformationFile