IOCTL_MOUNTMGR_QUERY_POINTS IOCTL(mountmgr.h)

이 IOCTL은 볼륨의 영구 기호 링크 이름(즉, 탑재 지점), 볼륨의 고유 ID 및 볼륨에 대한 비영구 디바이스 이름(예: "\Device\HarddiskVolume1")으로 구성된 삼중을 반환합니다. 이 IOCTL에 대한 입력은 단일 트리플을 포함하는 MOUNTMGR_MOUNT_POINT 구조체입니다.

입력 트리플에 고유 ID 또는 비영구 디바이스 이름이 포함된 경우 요청은 볼륨 GUID 경로 이름 및 드라이브 문자를 포함하여 연결된 모든 탑재 지점(기호 링크)을 검색합니다. 그러나 입력 트리플에 기호 링크가 있지만 고유 ID 또는 디바이스 이름을 지정하지 않는 경우 요청은 고유한 ID 및 디바이스 이름과 함께 입력에 제공된 기호 링크가 포함된 단일 트리플만 반환합니다. 호출자는 고유한 ID 또는 디바이스 이름을 사용하여 다른 IOCTL을 제출하여 나머지 탑재 지점을 검색해야 합니다.

입력 트리플이 비어 있으면 탑재 관리자는 탑재된 전체 디바이스 목록을 반환합니다.

탑재 관리자는 호출자가 제공하는 만큼의 정보와 일치하는 트리플을 반환합니다. 호출자가 고유 ID를 제출하면 탑재 관리자는 해당 고유 ID가 있는 모든 트리플을 반환합니다. 호출자가 볼륨 경로 이름 또는 드라이브 문자를 기호 링크 이름으로 입력하는 경우 탑재 관리자는 기호 링크에 대한 삼중만 반환합니다. 기호 링크당 하나의 항목이 있습니다. 호출자가 디바이스 경로 이름을 입력하는 경우 탑재 관리자는 해당 디바이스 경로 이름에 대한 세 배만 반환합니다. 호출자가 고유한 ID와 기호 링크를 입력하는 경우 탑재 관리자는 해당 기호 링크에 대해 하나의 항목만 반환합니다. 호출자는 디바이스 경로 이름을 가져오기 위해 이 작업을 수행합니다. 호출자가 디바이스 경로 이름, 고유 ID 또는 기호 링크를 입력하지 않으면 탑재 관리자는 모든 항목/삼중을 반환합니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

탑재 관리자 클라이언트는 Irp-AssociatedIrp.SystemBuffer>에서 버퍼의 시작 부분에 있는 MOUNTMGR_MOUNT_POINT 구조를 초기화합니다. 이 구조 바로 다음에 MM 클라이언트는 기호 링크 이름, 고유 ID 및 디바이스 이름을 순서대로 로드합니다.

입력 버퍼 길이

IRP의 I/O 스택 위치에 있는 Parameters.DeviceIoControl.InputBufferLength는 입력 버퍼의 크기(바이트)를 나타내며, 이 크기는 보다 크거나 같sizeof(MOUNTMGR_MOUNT_POINT)아야 합니다.

출력 버퍼

탑재 관리자는 Irp-AssociatedIrp.SystemBuffer>에서 버퍼의 시작 부분에 MOUNTMGR_MOUNT_POINTS 형식의 가변 길이 구조를 초기화합니다. 탑재 관리자는 표시된 볼륨과 연결된 탑재 지점을 이 구조체의 MountPoints[] 멤버가 가리키는 주소에 삽입합니다. 각 탑재 지점은 이 IOCTL의 입력 섹션에 정의된 대로 MOUNTMGR_MOUNT_POINT 구조체로 표시됩니다.

출력 버퍼 길이

IRP의 I/O 스택 위치에 있는 Parameters.DeviceIoControl.OutputBufferLength는 출력 버퍼의 크기(바이트)를 나타내며, 이 크기는 보다 크거나 같sizeof(MOUNTMGR_MOUNT_POINTS)아야 합니다.

입력/출력 버퍼

해당 없음

입력/출력 버퍼 길이

해당 없음

상태 블록

작업이 성공하면 상태 필드가 STATUS_SUCCESS 설정됩니다.

탑재된 볼륨 디바이스 목록에서 고유 ID와 존재하지 않는 디바이스 이름을 모두 찾을 수 없는 경우 상태 필드는 STATUS_INVALID_PARAMETER 설정됩니다.

InputBufferLength가 보다 sizeof(MOUNTMGR_MOUNT_POINT)작으면 상태 필드가 STATUS_INVALID_PARAMETER 설정됩니다.

InputBufferLength가 세 개의 입력 ID 문자열의 총 길이보다 작으면 상태 필드가 STATUS_INVALID_PARAMETER 설정됩니다.

OutputBufferLength가 보다 sizeof(MOUNTMGR_MOUNT_POINT)작으면 상태 필드가 STATUS_INVALID_PARAMETER.

OutputBufferLength가 탑재 지점의 크기 합계를 3배보다 sizeof(MOUNTMGR_MOUNT_POINTS) 작으면 상태 필드가 STATUS_BUFFER_OVERFLOW 설정됩니다.

3중 내에 포함된 세 개의 문자열 중 임의의 문자열이 홀수 주소(예: 주소 & 01 != 0)에 맞춰진 경우 상태 필드는 STATUS_INVALID_PARAMETER 설정됩니다.

설명

자세한 내용은 스토리지 클래스 드라이버에서 탑재 관리자 요청 지원을 참조하세요.

요구 사항

요구 사항
헤더 mountmgr.h(Mountmgr.h 포함)

추가 정보

MOUNTMGR_MOUNT_POINTS