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