EFI_USBFN_IO_PROTOCOL. 전송

Transfer 함수는 지정된 엔드포인트의 호스트 간 데이터 전송을 처리합니다.

Direction 설명
EfiUsbEndpointDirectionDeviceTx 지정된 엔드포인트에서 전송 전송을 시작하고 즉시 반환합니다.
EfiUsbEndpointDirectionDeviceRx 지정된 엔드포인트에서 수신 전송을 시작하고 사용 가능한 데이터로 즉시 반환합니다.

구문

typedef
EFI_STATUS
(EFIAPI *EFI_USBFN_IO_TRANSFER) (
  IN EFI_USBFN_IO_PROTOCOL         *This,
  IN UINT8                         EndpointIndex,
  IN EFI_USBFN_ENDPOINT_DIRECTION  Direction,
  IN OUT UINTN                     *BufferSize,
  IN OUT VOID                      *Buffer
  );

매개 변수

This
EFI_USBFN_IO_PROTOCOL 인스턴스에 대한 포인터입니다.

EndpointIndex
TX 또는 RX 전송이 수행되어야 하는 엔드포인트를 나타냅니다.

방향
엔드포인트의 방향입니다. 자세한 내용은 EFI_USBFN_ENDPOINT_DIRECTION 참조하세요.

BufferSize
방향이 EfiUsbEndpointDirectionDeviceRx인 경우: 입력에서 버퍼의 크기(바이트)입니다. 출력에서 버퍼에 반환된 데이터의 양(바이트)입니다. Direction가 EfiUsbEndpointDirectionDeviceTx인 경우: 입력에서 버퍼의 크기(바이트)입니다. 출력에서 실제로 전송되는 데이터의 양(바이트)입니다.

Buffer
Direction가 EfiUsbEndpointDirectionDeviceRx:수신된 데이터를 반환하는 버퍼인 경우 방향이 EfiUsbEndpointDirectionDeviceTx인 경우: 전송할 데이터가 포함된 버퍼입니다.

참고

이 버퍼는 AllocateTransferBuffer 및 FreeTransferBuffer 함수를 사용하여 할당되고 해제됩니다. EfiUsbMsgEndpointStatusChangedRx 또는 EfiUsbMsgEndpointStatusChangedTx 메시지가 메시지 페이로드의 일부로 전송 버퍼의 주소와 함께 수신될 때까지 이 함수의 호출자는 버퍼를 해제하거나 다시 사용하지 않아야 합니다. EFI_USBFN_IO_PROTOCOL 참조하세요. 다양한 메시지 및 페이로드에 대한 자세한 내용은 EventHandler입니다.

반환 값

함수는 다음 값 중 하나를 반환합니다.

반환 코드 설명
EFI_SUCCESS 함수가 성공적으로 반환됨
EFI_INVALID_PARAMETER 매개 변수가 잘못되었습니다.
EFI_DEVICE_ERROR 물리적 디바이스에서 오류를 보고했습니다.
EFI_NOT_READY 물리적 디바이스가 사용 중이거나 이 요청을 처리할 준비가 되지 않았습니다.

설명

클래스 드라이버는 EFI_USBFN_IO_PROTOCOL 호출해야 합니다 . EventHandler 는 전송 상태 및 다양한 엔드포인트에서 전송된 바이트 수에 대한 업데이트를 반복적으로 받습니다. 전송 상태가 업데이트되면 이 메서드에 제공된 Buffer 포인터를 사용하여 EFI_USBFN_TRANSFER_RESULT 구조체의 버퍼 필드를 초기화해야 합니다. 지정된 방향이 엔드포인트에 대해 잘못된 경우 이 함수는 EFI_INVALID_PARAMETER 반환 코드와 함께 실패합니다.

호출 시퀀스의 개요는 UEFI 시퀀스 다이어그램에 설명되어 있습니다.

지정된 방향이 엔드포인트에 대해 잘못된 경우 이 함수는 EFI_INVALID_PARAMETER 반환 코드와 함께 실패합니다.

요구 사항

헤더: 생성된 사용자