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