EFI_USBFN_IO_PROTOCOL.EventHandler

重复调用 EventHandler 函数以接收 USB 总线状态更新、接收和传输终结点状态更改,并在终结点 0 上设置数据包。

语法

typedef
EFI_STATUS
(EFIAPI * EFI_USBFN_IO_EVENTHANDLER) (
  IN EFI_USBFN_IO_PROTOCOL        *This,
  OUT EFI_USBFN_MESSAGE           *Message,
  IN OUT UINTN                    *PayloadSize,
  OUT EFI_USBFN_MESSAGE_PAYLOAD   *Payload
  );

参数

This
指向 EFI_USBFN_IO_PROTOCOL 实例的指针。

消息
指示启动此通知的事件的 EFI_USBFN_MESSAGE 值。

PayloadSize
输入时,有效负载指向的内存大小。 输出时,有效负载中返回的数据量。

有效负载
指向 EFI_USBFN_MESSAGE_PAYLOAD 实例的指针,用于返回当前消息的其他有效负载。

返回值

函数返回以下值:

返回代码 说明
EFI_SUCCESS 函数已成功返回。
EFI_INVALID_PARAMETER 参数无效。
EFI_DEVICE_ERROR 此物理设备报告了一个错误。
EFI_NOT_READY 物理设备正忙或未准备好处理此请求。
EFI_BUFFER_TOO_SMALL 提供的缓冲区不够大,无法容纳消息有效负载。

注解

类驱动程序必须反复调用 EventHandler,才能接收有关不同终结点的传输状态和其上传输的字节数的更新。 有关详细信息,请参阅 UEFI 序列图

一些消息具有在提供的缓冲区中返回的关联有效负载。 下表描述各种消息及其有效负载。

Message 有效负载 说明
EfiUsbMsgSetupPacket EFI_USB_DEVICE_REQUEST 收到 SETUP 数据包。
EfiUsbMsgEndpointStatusChangedRx EFI_USBFN_TRANSFER_RESULT 某些请求的数据已传输到主机。 类驱动程序负责确定是否需要重新发送任何剩余数据。 提供给 EFI_USBFN_IO_PROTOCOL.Transfer 的缓冲区必须与有效负载的“缓冲区”字段相同。
EfiUsbMsgEndpointStatusChangedTx EFI_USBFN_TRANSFER_RESULT 某些请求的数据已从主机接收。 类驱动程序负责确定是否需要等待任何剩余数据。 提供给 EFI_USBFN_IO_PROTOCOL.Transfer 的缓冲区必须与有效负载的“缓冲区”字段相同。
EfiUsbMsgBusEventReset RESET 总线事件已发出信号。
EfiUsbMsgBusEventDetach DETACH 总线事件已发出信号。
EfiUsbMsgBusEventAttach ATTACH 总线事件已发出信号。
EfiUsbMsgBusEventSuspend SUSPEND 总线事件已发出信号。
EfiUsbMsgBusEventResume RESUME 总线事件已发出信号。
EfiUsbMsgBusEventSpeed EFI_USB_BUS_SPEED 总线速度更新已发出信号。

要求

标头:用户生成