Condividi tramite


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