Compartir vía


Protocolo de función USB UEFI

Importante

Algunas informaciones de esta sección solo se pueden aplicar a Windows 10 Mobile y a determinadas arquitecturas de procesador.

El protocolo de función USB define un transporte USB genérico y ligero en el entorno UEFI. Este protocolo se usa mediante herramientas flashing, modo de almacenamiento masivo USB y otras herramientas que requieren comunicación bidireccional entre un dispositivo que se arranca en el entorno UEFI y un equipo host.

EFI_USBFN_IO_PROTOCOL

Al igual que otros controladores de dispositivos UEFI, el punto de entrada de un controlador de función USB conecta EFI_DRIVER_BINDING_PROTOCOL al identificador de imagen del controlador de EFI_USBFN_IO_PROTOCOL

El protocolo de enlace de controladores contiene tres servicios, Supported, Start y Stop. La función Supported debe probar para ver si este controlador admite un controlador determinado. La función Start debe suministrar alimentación al controlador USB si es necesario, inicializar el hardware y las estructuras de datos internas y, a continuación, devolver. Esta función no debe activar el puerto. La función Stop debe deshabilitar el dispositivo restableciendo el bit de ejecución o detención y apagando el controlador USB si es necesario.

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 revisión

#define EFI_USBFN_IO_PROTOCOL_REVISION   0x00010002

Estructura de la interfaz de 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;

Miembros

Revisión
Revisión a la que se adhiere el EFI_USBFN_IO_PROTOCOL . Todas las revisiones futuras deben ser compatibles con versiones anteriores. Si una versión futura no es compatible con versiones anteriores, se debe usar un GUID diferente.

DetectPort
Devuelve información sobre el tipo de puerto USB. Consulte EFI_USBFN_IO_PROTOCOL. DetectPort.

ConfigureEnableEndpoints
Inicialice todos los puntos de conexión en función de los descriptores de configuración y del dispositivo proporcionados. Habilite el dispositivo estableciendo el bit de ejecución o detención. Consulte EFI_USBFN_IO_PROTOCOL. ConfigureEnableEndpoints.

GetEndpointMaxPacketSize
Devuelve el tamaño máximo de paquete del punto de conexión especificado. Consulte EFI_USBFN_IO_PROTOCOL. GetEndpointMaxPacketSize.

GetDeviceInfo
Devuelve información específica del dispositivo basada en el identificador proporcionado como una cadena Unicode. Consulte EFI_USBFN_IO_PROTOCOL. GetDeviceInfo.

GetVendorIdProductId
Devuelve vendor-id y product-id del dispositivo. Consulte EFI_USBFN_IO_PROTOCOL. GetVendorIdProductId.

AbortTransfer
Anula la transferencia en el punto de conexión especificado. Consulte EFI_USBFN_IO_PROTOCOL. AbortTransfer.

GetEndpointStallState
Devuelve el estado de detención en el punto de conexión especificado. Consulte EFI_USBFN_IO_PROTOCOL. GetEndpointStallState.

SetEndpointStallS
Establece o borra el estado de detención en el punto de conexión especificado. Consulte EFI_USBFN_IO_PROTOCOL. SetEndpointStallState.

Eventhandler
Esta función se llama repetidamente para recibir actualizaciones en estados de bus USB, recibir, transmitir eventos completos en los puntos de conexión y configurar el paquete en el punto de conexión 0. Consulte EFI_USBFN_IO_PROTOCOL. EventHandler.

Transferencia
Esta función controla la transferencia de datos hacia o desde el host en el punto de conexión especificado, según la dirección especificada. Consulte EFI_USBFN_IO_PROTOCOL. Transferencia.

GetMaxTransferSize
Tamaño máximo de transferencia admitido en bytes. Consulte EFI_USBFN_IO_PROTOCOL. GetMaxTransferSize.

AllocateTransferBuffer
Asigna un búfer de transferencia del tamaño especificado que cumple los requisitos del controlador. Consulte EFI_USBFN_IO_PROTOCOL. AllocateTransferBuffer.

FreeTransferBuffer
Desasigna la memoria asignada para el búfer de transferencia mediante la función AllocateTransferBuffer . Consulte EFI_USBFN_IO_PROTOCOL. FreeTransferBuffer.

StartController
Proporciona alimentación al controlador USB si es necesario e inicializa las estructuras de datos internas y de hardware. Consulte EFI_USBFN_IO_PROTOCOL. StartController. Esta función está disponible a partir de la revisión 0x00010001 del protocolo.

StopController
Deshabilita el dispositivo restableciendo el bit de ejecución o detención y apaga el controlador USB si es necesario. Consulte EFI_USBFN_IO_PROTOCOL. StopController. Esta función está disponible a partir de la revisión 0x00010001 del protocolo.

SetEndpointPolicy
Establece la directiva de configuración para el punto de conexión no de control especificado. Consulte EFI_USBFN_IO_PROTOCOL. SetEndpointPolicy. Esta función está disponible a partir de la revisión 0x00010001 del protocolo.

GetEndpointPolicy
Recupera la directiva de configuración para el punto de conexión no de control especificado. Consulte EFI_USBFN_IO_PROTOCOL. GetEndpointPolicy. Esta función está disponible a partir de la revisión 0x00010001 del protocolo.

ConfigureEnableEndpointsEx
Inicializa todos los puntos de conexión seleccionando el descriptor de configuración y el dispositivo con la máxima velocidad (hasta SuperSpeed) compatible con el hardware. Habilita el dispositivo estableciendo el bit de ejecución o detención. Consulte EFI_USBFN_IO_PROTOCOL. ConfigureEnableEndpointsEx. Esta función está disponible a partir de la revisión 0x00010002 del protocolo.

Comentarios

En la tabla siguiente se enumeran las funciones que se admiten en cada versión del protocolo EFI_USBFN_IO_PROTOCOL .

Revisión 0x00010002 Revisión 0x00010001 Revisión 0x00010000
ConfigureEnableEndpointsEx DetectPort
ConfigureEnableEndpoints
GetEndpointMaxPacketSize
GetDeviceInfo
GetVendorIdProductId
AbortTransfer
GetEndpointStallState
SetEndpointStallState
Eventhandler
Transferencia
GetMaxTransferSize
AllocateTransferBuffer
FreeTransferBuffer
StartController
StopController
SetEndpointPolicy
GetEndpointPolicy
DetectPort
ConfigureEnableEndpoints
GetEndpointMaxPacketSize
GetDeviceInfo
GetVendorIdProductId
AbortTransfer
GetEndpointStallState
SetEndpointStallState
Eventhandler
Transferencia
GetMaxTransferSize
AllocateTransferBuffer
FreeTransferBuffer