IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO IOCTL(avc.h)

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO I/O 제어 코드는 가상 하위 단위의 열거형을 제어합니다. IRP_MJ_DEVICE_CONTROL 디스패치를 통해 커널 모드 구성 요소뿐만 아니라 사용자 모드에서도 사용할 수 있습니다. 드라이버 간 통신의 경우 METHOD_BUFFERED IOCTL이므로 IRP 필드를 적절하게 설정합니다(IrpStack-Parameters.DeviceIoControl.InputBufferLength> 및 Irp-AssociatedIrp.SystemBuffer>).

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에 전달된 버퍼는 단일 바이트 하위 단위 주소를 포함하지만 32바이트 하위 단위 주소로 제한되는 sizeof(AVC_SUBUNIT_ADDR_SPEC)만큼 커야 합니다.
STATUS_INVALID_PARAMETER 하위 단위 주소가 잘못 지정되었습니다.
STATUS_ACCESS_DENIED 현재 사용자에게 업데이트를 영구적으로 만들기 위한 레지스트리 액세스 권한이 부족합니다.

설명

IRQL = PASSIVE_LEVEL 호출해야 합니다.

요구 사항

요구 사항
헤더 avc.h(Avc.h 포함)

추가 정보

AVC_SUBUNIT_ADDR_SPEC

IOCTL_AVC_BUS_RESET

IOCTL_AVC_CLASS

IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO