IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL(mountmgr.h)
이 IOCTL을 받으면 클라이언트 드라이버는 볼륨에 대한 (존재하지 않는) 디바이스(또는 대상) 이름을 제공해야 합니다. 탑재 관리자는 클라이언트에서 반환한 디바이스 이름 기호 링크의 대상으로 사용합니다. 디바이스 이름의 예는 "\Device\HarddiskVolume1"입니다.
탑재 관리자 클라이언트에서 이 IOCTL에 대한 지원은 필수입니다.
주 코드
입력 버퍼
없음.
입력 버퍼 길이
없음.
출력 버퍼
탑재 관리자 클라이언트는 Irp->AssociatedIrp.SystemBuffer버퍼의 시작 부분에 MOUNTDEV_NAME 형식의 가변 길이 구조를 반환합니다. 이 구조체의 Name 멤버가 가리키는 주소에 디바이스 이름을 삽입해야 합니다.
출력 버퍼 길이
IRP의 I/O 스택 위치에 있는 parameters.DeviceIoControl.OutputBufferLength 출력 버퍼의 크기(바이트)를 나타내며 이는 sizeof(MOUNTDEV_NAME)
보다 크거나 같아야 합니다.
상태 블록
정보 필드는 FIELD_OFFSET(MOUNTDEV_NAME, 이름) + output->NameLength 또는 출력>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 포함) |