Freigeben über


UEFI USB-Funktionsprotokoll

Wichtig

Einige Informationen in diesem Abschnitt gelten möglicherweise nur für Windows 10 Mobile und bestimmte Prozessorarchitekturen.

Das USB-Funktionsprotokoll definiert einen generischen und einfachen USB-Transport in der UEFI-Umgebung. Dieses Protokoll wird von Flashtools, dem USB-Massenspeichermodus und anderen Tools verwendet, die eine bidirektionale Kommunikation zwischen einem Gerät, das in der UEFI-Umgebung gestartet wird, und einem Hostcomputer erfordern.

EFI_USBFN_IO_PROTOCOL

Wie bei anderen UEFI-Gerätetreibern fügt der Einstiegspunkt für einen USB-Funktionstreiber EFI_DRIVER_BINDING_PROTOCOL an das Imagehandle EFI_USBFN_IO_PROTOCOL Treibers an.

Das Treiberbindungsprotokoll enthält die drei Dienste Supported, Start und Stop. Die Unterstützte Funktion muss testen, ob dieser Treiber einen bestimmten Controller unterstützt. Die Startfunktion muss den USB-Controller bei Bedarf mit Strom versorgen, Hardware und interne Datenstrukturen initialisieren und dann zurückgeben. Der Port darf von dieser Funktion nicht aktiviert werden. Die Stop-Funktion muss das Gerät deaktivieren, indem sie das Run/Stop-Bit zurückgesetzt und den USB-Controller bei Bedarf ausschaltet.

GUID

// {32D2963A-FE5D-4f30-B633-6E5DC55803CC}
#define EFI_USBFN_IO_PROTOCOL_GUID \
  {0x32d2963a, 0xfe5d, 0x4f30, 0xb6, 0x33, 0x6e, 0x5d, 0xc5, \
   0x58, 0x3, 0xcc };

Revisionsnummer

#define EFI_USBFN_IO_PROTOCOL_REVISION   0x00010002

Protokollschnittstellenstruktur

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;

Member

Revision
Die Revision, an die sich die EFI_USBFN_IO_PROTOCOL hält. Alle zukünftigen Revisionen müssen abwärtskompatibel sein. Wenn eine zukünftige Version nicht abwärtskompatibel ist, muss eine andere GUID verwendet werden.

DetectPort
Gibt Informationen zum USB-Porttyp zurück. Siehe EFI_USBFN_IO_PROTOCOL. DetectPort.

ConfigureEnableEndpoints
Initialisieren Sie alle Endpunkte basierend auf den angegebenen Geräte- und Konfigurationsdeskriptoren. Aktivieren Sie das Gerät, indem Sie das Run/Stop-Bit festlegen. Siehe EFI_USBFN_IO_PROTOCOL. ConfigureEnableEndpoints.

GetEndpointMaxPacketSize
Gibt die maximale Paketgröße des angegebenen Endpunkts zurück. Siehe EFI_USBFN_IO_PROTOCOL. GetEndpointMaxPacketSize.

GetDeviceInfo
Gibt gerätespezifische Informationen basierend auf dem angegebenen Bezeichner als Unicode-Zeichenfolge zurück. Siehe EFI_USBFN_IO_PROTOCOL. GetDeviceInfo.

GetVendorIdProductId
Gibt die Anbieter-ID und die Produkt-ID des Geräts zurück. Siehe EFI_USBFN_IO_PROTOCOL. GetVendorIdProductId.

AbbruchTransfer
Bricht die Übertragung auf dem angegebenen Endpunkt ab. Siehe EFI_USBFN_IO_PROTOCOL. Abbrechentransfer.

GetEndpointStallState
Gibt den Zustand des Stillstands auf dem angegebenen Endpunkt zurück. Siehe EFI_USBFN_IO_PROTOCOL. GetEndpointStallState.

SetEndpointStallS
Legt den Zustand des Stillstands auf dem angegebenen Endpunkt fest oder löscht diese. Siehe EFI_USBFN_IO_PROTOCOL. SetEndpointStallState.

Eventhandler
Diese Funktion wird wiederholt aufgerufen, um Updates für USB-Buszustände zu empfangen, zu empfangen, vollständige Ereignisse auf Endpunkten zu übertragen und das Paket auf Endpunkt 0 einzurichten. Siehe EFI_USBFN_IO_PROTOCOL. EventHandler.

Übertragen
Diese Funktion übernimmt die Übertragung von Daten zum oder vom Host auf dem angegebenen Endpunkt, abhängig von der angegebenen Richtung. Siehe EFI_USBFN_IO_PROTOCOL. Übertragen.

GetMaxTransferSize
Die maximal unterstützte Übertragungsgröße in Bytes. Siehe EFI_USBFN_IO_PROTOCOL. GetMaxTransferSize.

AllocateTransferBuffer
Weist einen Übertragungspuffer der angegebenen Größe zu, der die Controlleranforderungen erfüllt. Siehe EFI_USBFN_IO_PROTOCOL. AllocateTransferBuffer.

FreeTransferBuffer
Entfällt die Zuordnung des Speichers, der durch die Funktion AllocateTransferBuffer für den Übertragungspuffer zugewiesen wurde. Siehe EFI_USBFN_IO_PROTOCOL. FreeTransferBuffer.

StartController
Versorgt den USB-Controller bei Bedarf mit Strom und initialisiert Hardware und interne Datenstrukturen. Siehe EFI_USBFN_IO_PROTOCOL. StartController. Diese Funktion ist ab der Revision 0x00010001 des Protokolls verfügbar.

StopController
Deaktiviert das Gerät durch Zurücksetzen des Run/Stop-Bits und schaltet den USB-Controller bei Bedarf aus. Siehe EFI_USBFN_IO_PROTOCOL. StopController. Diese Funktion ist ab der Revision 0x00010001 des Protokolls verfügbar.

SetEndpointPolicy
Legt die Konfigurationsrichtlinie für den angegebenen Nicht-Steuerungsendpunkt fest. Siehe EFI_USBFN_IO_PROTOCOL. SetEndpointPolicy. Diese Funktion ist ab der Revision 0x00010001 des Protokolls verfügbar.

GetEndpointPolicy
Ruft die Konfigurationsrichtlinie für den angegebenen Nicht-Steuerungsendpunkt ab. Siehe EFI_USBFN_IO_PROTOCOL. GetEndpointPolicy. Diese Funktion ist ab der Revision 0x00010001 des Protokolls verfügbar.

ConfigureEnableEndpointsEx
Intialisiert alle Endpunkte, indem sie die Geräte- und Konfigurationsbeschreibung mit der höchsten Geschwindigkeit (bis zu SuperSpeed) auswählen, die von der Hardware unterstützt wird. Aktiviert das Gerät durch Festlegen des Run/Stop-Bits. Siehe EFI_USBFN_IO_PROTOCOL. ConfigureEnableEndpointsEx. Diese Funktion ist ab der Revision 0x00010002 des Protokolls verfügbar.

Bemerkungen

In der folgenden Tabelle sind die Funktionen aufgeführt, die in jeder Version des EFI_USBFN_IO_PROTOCOL-Protokolls unterstützt werden.

Revision 0x00010002 Revision 0x00010001 Revision 0x00010000
ConfigureEnableEndpointsEx DetectPort
ConfigureEnableEndpoints
GetEndpointMaxPacketSize
GetDeviceInfo
GetVendorIdProductId
AbbruchTransfer
GetEndpointStallState
SetEndpointStallState
Eventhandler
Übertragen
GetMaxTransferSize
AllocateTransferBuffer
FreeTransferBuffer
StartController
StopController
SetEndpointPolicy
GetEndpointPolicy
DetectPort
ConfigureEnableEndpoints
GetEndpointMaxPacketSize
GetDeviceInfo
GetVendorIdProductId
AbortTransfer
GetEndpointStallState
SetEndpointStallState
Eventhandler
Übertragen
GetMaxTransferSize
AllocateTransferBuffer
FreeTransferBuffer