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 |