Protocollo di funzione USB UEFI
Importante
Alcune informazioni in questa sezione possono essere valide solo per Windows 10 Mobile e alcune architetture del processore.
Il protocollo di funzione USB definisce un trasporto USB generico e leggero nell'ambiente UEFI. Questo protocollo viene usato dagli strumenti flashing, dalla modalità di archiviazione di massa USB e da altri strumenti che richiedono la comunicazione bidirezionale tra un dispositivo avviato nell'ambiente UEFI e un computer host.
EFI_USBFN_IO_PROTOCOL
Analogamente ad altri driver di dispositivo UEFI, il punto di ingresso per un driver di funzione USB collega EFI_DRIVER_BINDING_PROTOCOL all'handle di immagine del driver EFI_USBFN_IO_PROTOCOL
Il protocollo di associazione driver contiene tre servizi, Supported, Start e Stop. La funzione Supported deve verificare se questo driver supporta un determinato controller. La funzione Start deve fornire alimentazione al controller USB, se necessario, inizializzare le strutture di dati interne e hardware e quindi restituire. La porta non deve essere attivata da questa funzione. La funzione Stop deve disabilitare il dispositivo reimpostando il bit di esecuzione/arresto e spegnendo il controller USB, se necessario.
GUID
// {32D2963A-FE5D-4f30-B633-6E5DC55803CC}
#define EFI_USBFN_IO_PROTOCOL_GUID \
{0x32d2963a, 0xfe5d, 0x4f30, 0xb6, 0x33, 0x6e, 0x5d, 0xc5, \
0x58, 0x3, 0xcc };
Numero di revisione
#define EFI_USBFN_IO_PROTOCOL_REVISION 0x00010002
Struttura dell'interfaccia del protocollo
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;
Membri
Revisione
Revisione a cui è conforme il EFI_USBFN_IO_PROTOCOL . Tutte le revisioni future devono essere compatibili con le versioni precedenti. Se una versione futura non è compatibile con le versioni precedenti, è necessario usare un GUID diverso.
DetectPort
Restituisce informazioni sul tipo di porta USB. Vedere EFI_USBFN_IO_PROTOCOL. DetectPort.
ConfigureEnableEndpoints
Inizializzare tutti gli endpoint in base ai descrittori di configurazione e del dispositivo forniti. Abilitare il dispositivo impostando il bit di esecuzione/arresto. Vedere EFI_USBFN_IO_PROTOCOL. ConfigureEnableEndpoints.
GetEndpointMaxPacketSize
Restituisce la dimensione massima del pacchetto dell'endpoint specificato. Vedere EFI_USBFN_IO_PROTOCOL. GetEndpointMaxPacketSize.
GetDeviceInfo
Restituisce informazioni specifiche sul dispositivo in base all'identificatore fornito come stringa Unicode. Vedere EFI_USBFN_IO_PROTOCOL. GetDeviceInfo.
GetVendorIdProductId
Restituisce l'ID fornitore e l'ID prodotto del dispositivo. Vedere EFI_USBFN_IO_PROTOCOL. GetVendorIdProductId.
AbortTransfer
Interrompe il trasferimento nell'endpoint specificato. Vedere EFI_USBFN_IO_PROTOCOL. AbortTransfer.
GetEndpointStallState
Restituisce lo stato di stallo nell'endpoint specificato. Vedere EFI_USBFN_IO_PROTOCOL. GetEndpointStallState.
SetEndpointStallS
Imposta o cancella lo stato di stallo nell'endpoint specificato. Vedere EFI_USBFN_IO_PROTOCOL. SetEndpointStallState.
Eventhandler
Questa funzione viene chiamata ripetutamente per ricevere aggiornamenti sugli stati del bus USB, ricevere, trasmettere eventi completi sugli endpoint e configurare i pacchetti nell'endpoint 0. Vedere EFI_USBFN_IO_PROTOCOL. EventHandler.
Trasferire
Questa funzione gestisce il trasferimento di dati da o verso l'host nell'endpoint specificato, a seconda della direzione specificata. Vedere EFI_USBFN_IO_PROTOCOL. Trasferimento.
GetMaxTransferSize
Dimensione massima di trasferimento supportata in byte. Vedere EFI_USBFN_IO_PROTOCOL. GetMaxTransferSize.
AllocateTransferBuffer
Alloca un buffer di trasferimento delle dimensioni specificate che soddisfa i requisiti del controller. Vedere EFI_USBFN_IO_PROTOCOL. AllocateTransferBuffer.
FreeTransferBuffer
Alloca la memoria allocata per il buffer di trasferimento dalla funzione AllocateTransferBuffer . Vedere EFI_USBFN_IO_PROTOCOL. FreeTransferBuffer.
StartController
Fornisce alimentazione al controller USB, se necessario e inizializza le strutture di dati interne e hardware. Vedere EFI_USBFN_IO_PROTOCOL. StartController. Questa funzione è disponibile a partire dalla revisione 0x00010001 del protocollo.
StopController
Disabilita il dispositivo reimpostando il bit di esecuzione/arresto e spegnendo il controller USB, se necessario. Vedere EFI_USBFN_IO_PROTOCOL. StopController. Questa funzione è disponibile a partire dalla revisione 0x00010001 del protocollo.
SetEndpointPolicy
Imposta i criteri di configurazione per l'endpoint non di controllo specificato. Vedere EFI_USBFN_IO_PROTOCOL. SetEndpointPolicy. Questa funzione è disponibile a partire dalla revisione 0x00010001 del protocollo.
GetEndpointPolicy
Recupera i criteri di configurazione per l'endpoint non di controllo specificato. Vedere EFI_USBFN_IO_PROTOCOL. GetEndpointPolicy. Questa funzione è disponibile a partire dalla revisione 0x00010001 del protocollo.
ConfigureEnableEndpointsEx
Inizializza tutti gli endpoint selezionando il descrittore di configurazione e il dispositivo con la velocità massima (fino a SuperSpeed) supportata dall'hardware. Abilita il dispositivo impostando il bit di esecuzione/arresto. Vedere EFI_USBFN_IO_PROTOCOL. ConfigureEnableEndpointsEx. Questa funzione è disponibile a partire dalla revisione 0x00010002 del protocollo.
Commenti
Nella tabella seguente sono elencate le funzioni supportate in ogni versione del protocollo EFI_USBFN_IO_PROTOCOL .
Revisione 0x00010002 | Revisione 0x00010001 | Revisione 0x00010000 |
---|---|---|
ConfigureEnableEndpointsEx | DetectPort ConfigureEnableEndpoints GetEndpointMaxPacketSize GetDeviceInfo GetVendorIdProductId AbortTransfer GetEndpointStallState SetEndpointStallState Eventhandler Trasferire GetMaxTransferSize AllocateTransferBuffer FreeTransferBuffer StartController StopController SetEndpointPolicy GetEndpointPolicy |
DetectPort ConfigureEnableEndpoints GetEndpointMaxPacketSize GetDeviceInfo GetVendorIdProductId AbortTransfer GetEndpointStallState SetEndpointStallState Eventhandler Trasferire GetMaxTransferSize AllocateTransferBuffer FreeTransferBuffer |