IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL(mountmgr.h)
이 IOCTL을 받으면 클라이언트 드라이버는 볼륨에 대한 (존재하지 않는) 디바이스(또는 대상) 이름을 제공해야 합니다. 탑재 관리자는 클라이언트에서 반환한 디바이스 이름을 기호 링크의 대상으로 사용합니다. 디바이스 이름의 예는 "\Device\HarddiskVolume1"입니다.
탑재 관리자 클라이언트에서 이 IOCTL에 대한 지원은 필수입니다.
주 코드
입력 버퍼
없음
입력 버퍼 길이
없음
출력 버퍼
탑재 관리자 클라이언트는 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 포함) |