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 구조를 사용합니다.
주 코드
상태 블록
성공하면 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 포함) |