다음을 통해 공유


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
Direction가 EfiUsbEndpointDirectionDeviceRx인 경우: 입력에서 버퍼의 크기(바이트)입니다. 출력에서 버퍼에 반환된 데이터의 양(바이트)입니다. Direction가 EfiUsbEndpointDirectionDeviceTx인 경우: 입력에서 버퍼의 크기(바이트)입니다. 출력에서 실제로 전송되는 데이터의 양(바이트)입니다.

Buffer
Direction가 EfiUsbEndpointDirectionDeviceRx인 경우: 받은 데이터를 반환할 버퍼입니다. Direction가 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는 전송 상태 대한 업데이트와 다양한 엔드포인트에서 전송된 바이트 수를 반복적으로 수신합니다. 전송 상태 업데이트되면 이 메서드에 제공된 버퍼 포인터를 사용하여 EFI_USBFN_TRANSFER_RESULT 구조의 버퍼 필드를 초기화해야 합니다. 지정된 방향이 엔드포인트에 대해 잘못된 경우 이 함수는 EFI_INVALID_PARAMETER 반환 코드와 함께 실패합니다.

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

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

요구 사항

헤더: 생성된 사용자