Compartilhar 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 do IRP_MJ_DEVICE_CONTROL expedição. Para comunicação driver a 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.

Este 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 para 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 tem privilégios de acesso insuficientes ao Registro para tornar a atualização persistente.

Observações

Deve ser chamado em IRQL = PASSIVE_LEVEL.

Requisitos

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

Consulte também

AVC_SUBUNIT_ADDR_SPEC

IOCTL_AVC_BUS_RESET

IOCTL_AVC_CLASS

IOCTL_AVC_REMOVE_VIRTUAL_SUBUNIT_INFO