EFI_USBFN_IO_PROTOCOL。轉移

Transfer式會處理在指定端點上的主機來回傳輸數據。

方向 描述
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
  );

參數


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 結構的 Buffer 字段必須使用提供給此方法的 Buffer 指標初始化。 如果端點的指定方向不正確,此函式會失敗並傳回EFI_INVALID_PARAMETER傳回碼。

呼叫順序的概觀會顯示在 UEFI 時序圖

如果端點的指定方向不正確,此函式會失敗並傳回EFI_INVALID_PARAMETER傳回碼。

需求

標頭: 用戶產生的