/* Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing Absolute Pointer protocol. */
EFI_STATUS EFIAPI ConSplitterAbsolutePointerDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
/* Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing Absolute Pointer protocol. */
EFI_STATUS EFIAPI ConSplitterAbsolutePointerDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
{
  EFI_STATUS                     Status;
  EFI_ABSOLUTE_POINTER_PROTOCOL  *AbsolutePointer;
  if (NumberOfChildren == 0) {
    return EFI_SUCCESS;
  }
  Status = ConSplitterStop (
             This,
             ControllerHandle,
             mConIn.VirtualHandle,
             &gEfiAbsolutePointerProtocolGuid,
             &gEfiAbsolutePointerProtocolGuid,
             (VOID **)&AbsolutePointer
             );
  if (EFI_ERROR (Status)) {
    return Status;
  }
  return ConSplitterAbsolutePointerDeleteDevice (&mConIn, AbsolutePointer);
}