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 | 버스 속도 업데이트 신호. |
요구 사항
헤더: 생성된 사용자