/* Retrieves the current state of a pointer device. */
EFI_STATUS EFIAPI GetMouseAbsolutePointerState(IN EFI_ABSOLUTE_POINTER_PROTOCOL *This, OUT EFI_ABSOLUTE_POINTER_STATE *State)
/* Retrieves the current state of a pointer device. */
EFI_STATUS EFIAPI GetMouseAbsolutePointerState(IN EFI_ABSOLUTE_POINTER_PROTOCOL *This, OUT EFI_ABSOLUTE_POINTER_STATE *State)
{
  USB_MOUSE_ABSOLUTE_POINTER_DEV  *MouseAbsolutePointerDev;
  if (State == NULL) {
    return EFI_INVALID_PARAMETER;
  }
  MouseAbsolutePointerDev = USB_MOUSE_ABSOLUTE_POINTER_DEV_FROM_MOUSE_PROTOCOL (This);
  if (!MouseAbsolutePointerDev->StateChanged) {
    return EFI_NOT_READY;
  }
  CopyMem (
    State,
    &MouseAbsolutePointerDev->State,
    sizeof (EFI_ABSOLUTE_POINTER_STATE)
    );
  MouseAbsolutePointerDev->StateChanged = FALSE;
  return EFI_SUCCESS;
}