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、Name) + output-NameLength>,或者将 output-NameLength> + sizeof (USHORT) 设置为,其中输出指向 Irp-AssociatedIrp.SystemBuffer> 处的缓冲区。
如果操作成功,则装载管理器客户端必须将 “信息” 字段设置为包含设备名称的以 NULL 结尾的字符串的长度,并将 “状态” 字段设置为STATUS_SUCCESS。
如果输出缓冲区太小而无法容纳设备名称,则装载管理器客户端必须将 “信息 ”字段设置为 sizeof(MOUNTDEV_NAME)
,将 “状态” 字段设置为“STATUS_BUFFER_OVERFLOW。 此外,装载管理器客户端会填充 MOUNTDEV_NAME 结构的 NameLength 成员。
注解
最佳做法是,实施者不得进行线程同步,并且不得将阻止和/或进程间通信 (IPC) 函数调用。
有关详细信息,请参阅 支持存储类驱动程序中的装载管理器请求。
要求
要求 | 值 |
---|---|
Header | mountmgr.h (包括 Mountmgr.h) |