다음을 통해 공유


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 instance 대한 포인터입니다.

Message
이 알림을 시작한 이벤트를 나타내는 EFI_USBFN_MESSAGE 값입니다.

PayloadSize
입력에서 페이로드가 가리키는 메모리의 크기입니다. 출력에서 페이로드에 반환된 데이터의 양입니다.

페이로드
현재 메시지에 대한 추가 페이로드를 반환하는 EFI_USBFN_MESSAGE_PAYLOAD instance 대한 포인터입니다.

반환 값

함수는 다음 값을 반환합니다.

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

설명

클래스 드라이버는 EventHandler를 반복적으로 호출하여 전송 상태 대한 업데이트와 다양한 엔드포인트에서 전송된 바이트 수를 수신해야 합니다. 자세한 내용은 UEFI 시퀀스 다이어그램 을 참조하세요.

일부 메시지에는 제공된 버퍼에 반환되는 연결된 페이로드가 있습니다. 다음 표에서는 다양한 메시지와 해당 페이로드에 대해 설명합니다.

메시지 Payload Description
EfiUsbMsgSetupPacket EFI_USB_DEVICE_REQUEST 설치 패킷이 수신되었습니다.
EfiUsbMsgEndpointStatusChangedRx EFI_USBFN_TRANSFER_RESULT 요청된 데이터 중 일부는 호스트로 전송되었습니다. 나머지 데이터를 다시 전송해야 하는지 여부를 결정하는 것은 클래스 드라이버의 책임입니다. EFI_USBFN_IO_PROTOCOL 제공된 버퍼입니다 . 전송 은 페이로드의 버퍼 필드와 동일해야 합니다.
EfiUsbMsgEndpointStatusChangedTx EFI_USBFN_TRANSFER_RESULT 요청된 데이터 중 일부는 호스트에서 수신되었습니다. 나머지 데이터를 기다려야 하는지 여부를 결정하는 것은 클래스 드라이버의 책임입니다. EFI_USBFN_IO_PROTOCOL 제공된 버퍼입니다 . 전송 은 페이로드의 버퍼 필드와 동일해야 합니다.
EfiUsbMsgBusEventReset 없음 RESET 버스 이벤트가 신호를 받았습니다.
EfiUsbMsgBusEventDetach 없음 분리 버스 이벤트가 신호를 받았습니다.
EfiUsbMsgBusEventAttach 없음 ATTACH 버스 이벤트가 신호를 받았습니다.
EfiUsbMsgBusEventSuspend 없음 SUSPEND 버스 이벤트가 신호를 받았습니다.
EfiUsbMsgBusEventResume 없음 RESUME 버스 이벤트가 신호를 받았습니다.
EfiUsbMsgBusEventSpeed EFI_USB_BUS_SPEED 버스 속도 업데이트 신호.

요구 사항

헤더: 생성된 사용자