IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO IOCTL (avc.h)

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO I/O 控制代码控制虚拟子单元的枚举。 它通过IRP_MJ_DEVICE_CONTROL调度可用于用户模式以及内核模式组件。 对于驱动程序到驱动程序的通信,它是METHOD_BUFFERED IOCTL,因此请相应地 (IrpStack-Parameters.DeviceIoControl.InputBufferLength> 和 Irp-AssociatedIrp.SystemBuffer>) 设置 IRP 字段。

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO用于添加或删除单个类型的子单元 ID。 具有子单位地址不同 ID 部分的连续调用会导致枚举 ID 数发生更改。 请注意, avc.sys 仅添加或删除最高 ID。 这是 AV/C 规范的限制,而不是驱动程序实现的限制。

此 IOCTL 使用 AVC_SUBUNIT_ADDR_SPEC 结构。

主要代码

IRP_MJ_DEVICE_CONTROL

状态块

如果成功,AV/C 协议驱动程序会将 Irp-IoStatus.Status>设置为 STATUS_SUCCESS。

可能的其他返回值包括:

返回值 说明
STATUS_INSUFFICIENT_RESOURCES 未传递任何缓冲区,或者可用于执行注册表查询的资源不足。
STATUS_INVALID_BUFFER_SIZE 在 Irp->AssociatedIrp.SystemBuffer 中传递的缓冲区必须至少与包含单字节子单位地址的 (AVC_SUBUNIT_ADDR_SPEC) 的大小一样大,但限制为 32 字节子单元地址。
STATUS_INVALID_PARAMETER 未正确指定子单位地址。
STATUS_ACCESS_DENIED 当前用户没有足够的注册表访问权限,无法使更新持久化。

注解

必须在 IRQL = PASSIVE_LEVEL 调用。

要求

要求
Header avc.h (包括 Avc.h)

另请参阅

AVC_SUBUNIT_ADDR_SPEC

IOCTL_AVC_BUS_RESET

IOCTL_AVC_CLASS

IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO