다음을 통해 공유


IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL(mountmgr.h)

이 IOCTL을 받으면 클라이언트 드라이버는 볼륨에 대한 (존재하지 않는) 디바이스(또는 대상) 이름을 제공해야 합니다. 탑재 관리자는 클라이언트에서 반환한 디바이스 이름을 기호 링크의 대상으로 사용합니다. 디바이스 이름의 예는 "\Device\HarddiskVolume1"입니다.

탑재 관리자 클라이언트에서 이 IOCTL에 대한 지원은 필수입니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

없음

입력 버퍼 길이

없음

출력 버퍼

탑재 관리자 클라이언트는 Irp-AssociatedIrp.SystemBuffer>에서 버퍼의 시작 부분에 MOUNTDEV_NAME 형식의 가변 길이 구조를 반환합니다. 디바이스 이름은 이 구조체의 이름 멤버가 가리키는 주소에 삽입해야 합니다.

출력 버퍼 길이

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

상태 블록

정보 필드는 FIELD_OFFSET(MOUNTDEV_NAME, Name) + output-NameLength> 또는 output-NameLength> + sizeof(USHORT)로 설정됩니다. 여기서 출력은 Irp-AssociatedIrp.SystemBuffer>에서 버퍼를 가리킵니다.

작업이 성공하면 탑재 관리자 클라이언트는 정보 필드를 디바이스 이름과 상태 필드를 포함하는 NULL 종료 문자열의 길이로 설정해야 STATUS_SUCCESS.

출력 버퍼가 너무 작아서 디바이스 이름을 보유하지 못하면 탑재 관리자 클라이언트는 정보 필드를 로 sizeof(MOUNTDEV_NAME) 설정하고 상태 필드를 STATUS_BUFFER_OVERFLOW 합니다. 또한 탑재 관리자 클라이언트는 MOUNTDEV_NAME 구조체의 NameLength 멤버를 채웁니다.

설명

구현자는 스레드 동기화를 수행해서는 안 되며 차단 및/또는 IPC(Interprocess Communication) 함수 호출을 수행해서는 안 됩니다.

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

요구 사항

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

추가 정보

MOUNTDEV_NAME