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 |