// avc.h
// CTL_CODE(0x002a, 0x001, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO 0x002A0004
View the official Windows Driver Kit DDI referenceNo description available.
The IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO I/O control code controls the enumeration of virtual subunits. It is available to user mode as well as kernel-mode components through the IRP_MJ_DEVICE_CONTROL dispatch. For driver-to-driver communication, it is a METHOD_BUFFERED IOCTL, so set the IRP fields accordingly (IrpStack->Parameters.DeviceIoControl.InputBufferLength and Irp->AssociatedIrp.SystemBuffer).
IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO is used to remove all subunit IDs of a single type. The ID part of the subunit address is ignored.
This IOCTL uses the AVC_SUBUNIT_ADDR_SPEC structure.
If successful, the AV/C protocol driver sets Irp->IoStatus.Status to STATUS_SUCCESS.
Possible other return values include:
| Return Value | Description |
|---|---|
| STATUS_INSUFFICIENT_RESOURCES | No buffer was passed, or insufficient resources available to perform a registry query. |
| STATUS_INVALID_BUFFER_SIZE | The buffer passed in Irp->AssociatedIrp.SystemBuffer must be at least as large as sizeof(AVC_SUBUNIT_ADDR_SPEC) which includes a single-byte subunit address, but limited to a 32 byte subunit address. |
| STATUS_INVALID_PARAMETER | The subunit address was specified incorrectly. |
| STATUS_ACCESS_DENIED | The current user has insufficient registry access privileges to make the update persistent. |
Must be called at IRQL = PASSIVE_LEVEL.
IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO