다음을 통해 공유


UEFI USB 함수 프로토콜

중요

이 섹션의 일부 정보는 Windows 10 Mobile 및 특정 프로세서 아키텍처에만 적용될 수 있습니다.

USB 함수 프로토콜은 UEFI 환경에서 제네릭 및 경량 USB 전송을 정의합니다. 이 프로토콜은 플래시 도구, USB 대용량 스토리지 모드 및 UEFI 환경으로 부팅된 디바이스와 호스트 컴퓨터 간의 양방향 통신이 필요한 기타 도구에서 사용됩니다.

EFI_USBFN_IO_PROTOCOL

다른 UEFI 디바이스 드라이버와 마찬가지로 USB 함수 드라이버의 진입점은 EFI_USBFN_IO_PROTOCOL 드라이버의 이미지 핸들에 EFI_DRIVER_BINDING_PROTOCOL 연결합니다.

드라이버 바인딩 프로토콜에는 지원됨, 시작중지의 세 가지 서비스가 포함됩니다. Supported 함수는 이 드라이버가 지정된 컨트롤러를 지원하는지 테스트해야 합니다. Start 함수는 필요한 경우 USB 컨트롤러에 전원을 공급하고 하드웨어 및 내부 데이터 구조를 초기화한 다음 반환해야 합니다. 이 함수에서 포트를 활성화하면 안 됩니다. Stop 함수는 실행/중지 비트를 다시 설정하여 디바이스를 사용하지 않도록 설정하고 필요한 경우 USB 컨트롤러의 전원을 꺼야 합니다.

GUID

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

수정 번호

#define EFI_USBFN_IO_PROTOCOL_REVISION   0x00010002

프로토콜 인터페이스 구조

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;

멤버

수정 버전
EFI_USBFN_IO_PROTOCOL 준수하는 수정 버전입니다. 이후의 모든 수정 버전은 이전 버전과 호환되어야 합니다. 이후 버전이 이전 버전과 호환되지 않는 경우 다른 GUID를 사용해야 합니다.

DetectPort
USB 포트 유형에 대한 정보를 반환합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. DetectPort.

ConfigureEnableEndpoints
제공된 디바이스 및 구성 설명자를 기반으로 모든 엔드포인트를 초기화합니다. 실행/중지 비트를 설정하여 디바이스를 사용하도록 설정합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. ConfigureEnableEndpoints.

GetEndpointMaxPacketSize
지정된 엔드포인트의 최대 패킷 크기를 반환합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. GetEndpointMaxPacketSize.

GetDeviceInfo
제공된 식별자를 유니코드 문자열로 기반으로 디바이스 관련 정보를 반환합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. GetDeviceInfo.

GetVendorIdProductId
디바이스의 vendor-id 및 product-id를 반환합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. GetVendorIdProductId.

AbortTransfer
지정된 엔드포인트에서 전송을 중단합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. AbortTransfer.

GetEndpointStallState
지정된 엔드포인트의 중단 상태를 반환합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. GetEndpointStallState.

SetEndpointStalls
지정된 엔드포인트에서 중단 상태를 설정하거나 지웁니다. EFI_USBFN_IO_PROTOCOL 참조하세요. SetEndpointStallState.

Eventhandler
이 함수는 USB 버스 상태에서 업데이트를 수신하고, 엔드포인트에서 전체 이벤트를 수신하고, 전송하고, 엔드포인트 0에서 패킷을 설정하기 위해 반복적으로 호출됩니다. EFI_USBFN_IO_PROTOCOL 참조하세요. EventHandler.

전달
이 함수는 지정된 방향에 따라 지정된 엔드포인트의 호스트 간 데이터 전송을 처리합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. 전송.

GetMaxTransferSize
지원되는 최대 전송 크기(바이트)입니다. EFI_USBFN_IO_PROTOCOL 참조하세요. GetMaxTransferSize.

AllocateTransferBuffer
컨트롤러 요구 사항을 충족하는 지정된 크기의 전송 버퍼를 할당합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. AllocateTransferBuffer.

FreeTransferBuffer
AllocateTransferBuffer 함수에 의해 전송 버퍼에 할당된 메모리를 할당 해제합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. FreeTransferBuffer.

StartController
필요한 경우 USB 컨트롤러에 전원을 공급하고 하드웨어 및 내부 데이터 구조를 초기화합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. StartController. 이 함수는 프로토콜의 수정 0x00010001 시작하여 사용할 수 있습니다.

StopController
실행/중지 비트를 다시 설정하여 디바이스를 사용하지 않도록 설정하고 필요한 경우 USB 컨트롤러의 전원을 끕니다. EFI_USBFN_IO_PROTOCOL 참조하세요. StopController. 이 함수는 프로토콜의 수정 0x00010001 시작하여 사용할 수 있습니다.

SetEndpointPolicy
지정된 비 제어 엔드포인트에 대한 구성 정책을 설정합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. SetEndpointPolicy. 이 함수는 프로토콜의 수정 0x00010001 시작하여 사용할 수 있습니다.

GetEndpointPolicy
지정된 비 제어 엔드포인트에 대한 구성 정책을 검색합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. GetEndpointPolicy. 이 함수는 프로토콜의 수정 0x00010001 시작하여 사용할 수 있습니다.

ConfigureEnableEndpointsEx
하드웨어에서 지원하는 가장 빠른 속도(최대 SuperSpeed)로 디바이스 및 구성 설명자를 선택하여 모든 엔드포인트를 초기화합니다. 실행/중지 비트를 설정하여 디바이스를 사용하도록 설정합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. ConfigureEnableEndpointsEx. 이 함수는 프로토콜의 수정 버전 0x00010002 시작하여 사용할 수 있습니다.

설명

다음 표에서는 각 버전의 EFI_USBFN_IO_PROTOCOL 프로토콜에서 지원되는 함수를 나열합니다.

수정 0x00010002 수정 버전 0x00010001 수정 0x00010000
ConfigureEnableEndpointsEx DetectPort
ConfigureEnableEndpoints
GetEndpointMaxPacketSize
GetDeviceInfo
GetVendorIdProductId
AbortTransfer
GetEndpointStallState
SetEndpointStallState
Eventhandler
전달
GetMaxTransferSize
AllocateTransferBuffer
FreeTransferBuffer
StartController
StopController
SetEndpointPolicy
GetEndpointPolicy
DetectPort
ConfigureEnableEndpoints
GetEndpointMaxPacketSize
GetDeviceInfo
GetVendorIdProductId
AbortTransfer
GetEndpointStallState
SetEndpointStallState
Eventhandler
전달
GetMaxTransferSize
AllocateTransferBuffer
FreeTransferBuffer