Protocolo de função USB UEFI
Importante
Algumas informações nesta seção podem se aplicar apenas a Windows 10 Mobile e determinadas arquiteturas de processador.
O protocolo de função USB define um transporte USB genérico e leve no ambiente UEFI. Esse protocolo é usado por ferramentas piscando, modo de armazenamento em massa USB e outras ferramentas que exigem comunicação bidirecional entre um dispositivo inicializado no ambiente UEFI e um computador host.
EFI_USBFN_IO_PROTOCOL
Como outros drivers de dispositivo UEFI, o ponto de entrada de um driver de função USB anexa EFI_DRIVER_BINDING_PROTOCOL ao identificador de imagem do driver de EFI_USBFN_IO_PROTOCOL
O protocolo de associação de driver contém três serviços, Com suporte, Iniciar e Parar. A função Com suporte deve testar para ver se esse driver dá suporte a um determinado controlador. A função Start deve fornecer energia ao controlador USB, se necessário, inicializar o hardware e as estruturas de dados internas e, em seguida, retornar. A porta não deve ser ativada por essa função. A função Stop deve desabilitar o dispositivo redefinindo o bit de execução/parada e desligar o controlador USB, se necessário.
GUID
// {32D2963A-FE5D-4f30-B633-6E5DC55803CC}
#define EFI_USBFN_IO_PROTOCOL_GUID \
{0x32d2963a, 0xfe5d, 0x4f30, 0xb6, 0x33, 0x6e, 0x5d, 0xc5, \
0x58, 0x3, 0xcc };
Número de revisão
#define EFI_USBFN_IO_PROTOCOL_REVISION 0x00010002
Estrutura da interface do protocolo
typedef struct _EFI_USBFN_IO_PROTOCOL
{
UINT32 Revision;
EFI_USBFN_IO_DETECT_PORT DetectPort;
EFI_USBFN_IO_CONFIGURE_ENABLE_ENDPOINTS ConfigureEnableEndpoints;
EFI_USBFN_IO_GET_ENDPOINT_MAXPACKET_SIZE GetEndpointMaxPacketSize;
EFI_USBFN_IO_GET_DEVICE_INFO GetDeviceInfo;
EFI_USBFN_IO_GET_VENDOR_ID_PRODUCT_ID GetVendorIdProductId;
EFI_USBFN_IO_ABORT_TRANSFER AbortTransfer;
EFI_USBFN_IO_GET_ENDPOINT_STALL_STATE GetEndpointStallState;
EFI_USBFN_IO_SET_ENDPOINT_STALL_STATE SetEndpointStallState;
EFI_USBFN_IO_EVENTHANDLER EventHandler;
EFI_USBFN_IO_TRANSFER Transfer;
EFI_USBFN_IO_GET_MAXTRANSFER_SIZE GetMaxTransferSize;
EFI_USBFN_IO_ALLOCATE_TRANSFER_BUFFER AllocateTransferBuffer;
EFI_USBFN_IO_FREE_TRANSFER_BUFFER FreeTransferBuffer;
EFI_USBFN_IO_START_CONTROLLER StartController;
EFI_USBFN_IO_STOP_CONTROLLER StopController;
EFI_USBFN_IO_SET_ENDPOINT_POLICY SetEndpointPolicy;
EFI_USBFN_IO_GET_ENDPOINT_POLICY GetEndpointPolicy;
EFI_USBFN_IO_CONFIGURE_ENABLE_ENDPOINTS_EX ConfigureEnableEndpointsEx;
} EFI_USBFN_IO_PROTOCOL;
Membros
Revisão
A revisão à qual o EFI_USBFN_IO_PROTOCOL segue. Todas as revisões futuras devem ser compatíveis com versões anteriores. Se uma versão futura não for compatível com versões anteriores, um GUID diferente deverá ser usado.
DetectPort
Retorna informações sobre o tipo de porta USB. Consulte EFI_USBFN_IO_PROTOCOL. DetectPort.
ConfigurarEnableEndpoints
Inicialize todos os pontos de extremidade com base em descritores de configuração e dispositivo fornecidos. Habilite o dispositivo definindo o bit de execução/parada. Consulte EFI_USBFN_IO_PROTOCOL. ConfigurarEnableEndpoints.
GetEndpointMaxPacketSize
Retorna o tamanho máximo do pacote do ponto de extremidade especificado. Consulte EFI_USBFN_IO_PROTOCOL. GetEndpointMaxPacketSize.
GetDeviceInfo
Retorna informações específicas do dispositivo com base no identificador fornecido como uma cadeia de caracteres Unicode. Consulte EFI_USBFN_IO_PROTOCOL. GetDeviceInfo.
GetVendorIdProductId
Retorna a ID do fornecedor e a ID do produto do dispositivo. Consulte EFI_USBFN_IO_PROTOCOL. GetVendorIdProductId.
AbortTransfer
Anula a transferência no ponto de extremidade especificado. Consulte EFI_USBFN_IO_PROTOCOL. AbortTransfer.
GetEndpointStallState
Retorna o estado de parada no ponto de extremidade especificado. Consulte EFI_USBFN_IO_PROTOCOL. GetEndpointStallState.
SetEndpointStalls
Define ou limpa o estado de parada no ponto de extremidade especificado. Consulte EFI_USBFN_IO_PROTOCOL. SetEndpointStallState.
EventHandler
Essa função é chamada repetidamente para receber atualizações em estados de barramento USB, receber, transmitir eventos completos em pontos de extremidade e configurar pacotes no ponto de extremidade 0. Consulte EFI_USBFN_IO_PROTOCOL. EventHandler.
Transferir
Essa função manipula a transferência de dados de ou para o host no ponto de extremidade especificado, dependendo da direção especificada. Consulte EFI_USBFN_IO_PROTOCOL. Transferir.
GetMaxTransferSize
O tamanho máximo de transferência com suporte em bytes. Consulte EFI_USBFN_IO_PROTOCOL. GetMaxTransferSize.
AllocateTransferBuffer
Aloca um buffer de transferência do tamanho especificado que atende aos requisitos do controlador. Consulte EFI_USBFN_IO_PROTOCOL. AllocateTransferBuffer.
FreeTransferBuffer
Desaloque a memória alocada para o buffer de transferência pela função AllocateTransferBuffer . Consulte EFI_USBFN_IO_PROTOCOL. FreeTransferBuffer.
StartController
Fornece energia para o controlador USB, se necessário, e inicializa o hardware e as estruturas de dados internas. Consulte EFI_USBFN_IO_PROTOCOL. StartController. Essa função está disponível a partir da revisão 0x00010001 do protocolo.
StopController
Desabilita o dispositivo redefinindo o bit de execução/parada e desativa o controlador USB, se necessário. Consulte EFI_USBFN_IO_PROTOCOL. StopController. Essa função está disponível a partir da revisão 0x00010001 do protocolo.
SetEndpointPolicy
Define a política de configuração para o ponto de extremidade não controle especificado. Consulte EFI_USBFN_IO_PROTOCOL. SetEndpointPolicy. Essa função está disponível a partir da revisão 0x00010001 do protocolo.
GetEndpointPolicy
Recupera a política de configuração para o ponto de extremidade não controle especificado. Consulte EFI_USBFN_IO_PROTOCOL. GetEndpointPolicy. Essa função está disponível a partir da revisão 0x00010001 do protocolo.
ConfigureEnableEndpointsEx
Intializa todos os pontos de extremidade selecionando o dispositivo e o descritor de configuração com a velocidade mais alta (até SuperSpeed) compatível com o hardware. Habilita o dispositivo definindo o bit de execução/parada. Consulte EFI_USBFN_IO_PROTOCOL. ConfigureEnableEndpointsEx. Essa função está disponível a partir da revisão 0x00010002 do protocolo.
Comentários
A tabela a seguir lista as funções com suporte em cada versão do protocolo EFI_USBFN_IO_PROTOCOL .
Revisão 0x00010002 | Revisão 0x00010001 | Revisão 0x00010000 |
---|---|---|
ConfigureEnableEndpointsEx | DetectPort ConfigurarEnableEndpoints GetEndpointMaxPacketSize GetDeviceInfo GetVendorIdProductId AbortTransfer GetEndpointStallState SetEndpointStallState EventHandler Transferir GetMaxTransferSize AllocateTransferBuffer FreeTransferBuffer StartController StopController SetEndpointPolicy GetEndpointPolicy |
DetectPort ConfigurarEnableEndpoints GetEndpointMaxPacketSize GetDeviceInfo GetVendorIdProductId AbortTransfer GetEndpointStallState SetEndpointStallState EventHandler Transferir GetMaxTransferSize AllocateTransferBuffer FreeTransferBuffer |