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
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) |