Share via


IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO IOCTL (avc.h)

O código de controle de E/S IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO controla a enumeração de subunidades virtuais. Ele está disponível para o modo de usuário, bem como componentes do modo kernel por meio da expedição de IRP_MJ_DEVICE_CONTROL. Para comunicação de driver para driver, é uma METHOD_BUFFERED IOCTL, portanto, defina os campos IRP adequadamente (IrpStack-Parameters.DeviceIoControl.InputBufferLength> e Irp-AssociatedIrp.SystemBuffer>).

IOCTL_AVC_UPDATE_VIRTUAL_SUBUNIT_INFO é usado para adicionar ou remover IDs de subunidade de um único tipo. Chamadas sucessivas com uma parte de ID diferente do endereço de subunidade fazem com que o número de IDs enumeradas seja alterado. Observe que avc.sys adiciona ou remove apenas as IDs mais altas. Essa é uma limitação da especificação AV/C, não da implementação do driver.

Esse IOCTL usa a estrutura AVC_SUBUNIT_ADDR_SPEC.

Código principal

IRP_MJ_DEVICE_CONTROL

Bloco de status

Se tiver êxito, o driver de protocolo AV/C definirá Irp-IoStatus.Status>como STATUS_SUCCESS.

Outros valores retornados possíveis incluem:

Valor Retornado Descrição
STATUS_INSUFFICIENT_RESOURCES Nenhum buffer foi passado ou recursos insuficientes disponíveis para executar uma consulta do Registro.
STATUS_INVALID_BUFFER_SIZE O buffer passado em Irp->AssociatedIrp.SystemBuffer deve ser pelo menos tão grande quanto sizeof(AVC_SUBUNIT_ADDR_SPEC), que inclui um endereço de subunidade de byte único, mas limitado a um endereço de subunidade de 32 bytes.
STATUS_INVALID_PARAMETER O endereço de subunidade foi especificado incorretamente.
STATUS_ACCESS_DENIED O usuário atual não tem privilégios de acesso ao Registro suficientes para tornar a atualização persistente.

Comentários

Deve ser chamado em IRQL = PASSIVE_LEVEL.

Requisitos

Requisito Valor
Cabeçalho avc.h (inclua Avc.h)

Confira também

AVC_SUBUNIT_ADDR_SPEC

IOCTL_AVC_BUS_RESET

IOCTL_AVC_CLASS

IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO