/** @file Mtftp drivers function header. Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef __EFI_MTFTP4_DRIVER_H__ #define __EFI_MTFTP4_DRIVER_H__ #include <Uefi.h> #include <Protocol/ServiceBinding.h> #include <Library/NetLib.h> #include <Library/UefiLib.h> #include <Library/UefiDriverEntryPoint.h> extern EFI_COMPONENT_NAME_PROTOCOL gMtftp4ComponentName; extern EFI_COMPONENT_NAME2_PROTOCOL gMtftp4ComponentName2; extern EFI_DRIVER_BINDING_PROTOCOL gMtftp4DriverBinding; extern EFI_UNICODE_STRING_TABLE *gMtftp4ControllerNameTable; /** Test whether MTFTP driver support this controller. @param This The MTFTP driver binding instance @param Controller The controller to test @param RemainingDevicePath The remaining device path @retval EFI_SUCCESS The controller has UDP service binding protocol installed, MTFTP can support it. @retval Others MTFTP can't support the controller. **/ EFI_STATUS EFIAPI Mtftp4DriverBindingSupported ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ); /** Start the MTFTP driver on this controller. MTFTP driver will install a MTFTP SERVICE BINDING protocol on the supported controller, which can be used to create/destroy MTFTP children. @param This The MTFTP driver binding protocol. @param Controller The controller to manage. @param RemainingDevicePath Remaining device path. @retval EFI_ALREADY_STARTED The MTFTP service binding protocol has been started on the controller. @retval EFI_SUCCESS The MTFTP service binding is installed on the controller. **/ EFI_STATUS EFIAPI Mtftp4DriverBindingStart ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath ); /** Stop the MTFTP driver on controller. The controller is a UDP child handle. @param This The MTFTP driver binding protocol @param Controller The controller to stop @param NumberOfChildren The number of children @param ChildHandleBuffer The array of the child handle. @retval EFI_SUCCESS The driver is stopped on the controller. @retval EFI_DEVICE_ERROR Failed to stop the driver on the controller. **/ EFI_STATUS EFIAPI Mtftp4DriverBindingStop ( IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer ); /** Create a MTFTP child for the service binding instance, then install the MTFTP protocol to the ChildHandle. @param This The MTFTP service binding instance. @param ChildHandle The Child handle to install the MTFTP protocol. @retval EFI_INVALID_PARAMETER The parameter is invalid. @retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the new child. @retval EFI_SUCCESS The child is successfully create. **/ EFI_STATUS EFIAPI Mtftp4ServiceBindingCreateChild ( IN EFI_SERVICE_BINDING_PROTOCOL *This, IN EFI_HANDLE *ChildHandle ); /** Destroy one of the service binding's child. @param This The service binding instance @param ChildHandle The child handle to destroy @retval EFI_INVALID_PARAMETER The parameter is invaid. @retval EFI_UNSUPPORTED The child may have already been destroyed. @retval EFI_SUCCESS The child is destroyed and removed from the parent's child list. **/ EFI_STATUS EFIAPI Mtftp4ServiceBindingDestroyChild ( IN EFI_SERVICE_BINDING_PROTOCOL *This, IN EFI_HANDLE ChildHandle ); #endif