#ifndef EFI_PROTOCOLS_PLATFORM_TO_DRIVER_CONFIGURATION_H #define EFI_PROTOCOLS_PLATFORM_TO_DRIVER_CONFIGURATION_H #define EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL_GUID {0x642cd590,0x8059,0x4c0a, {0xa9,0x58,0xc5,0xec,0x07,0xd2,0x3c,0x4b}} #define EFI_PLATFORM_TO_DRIVER_CONFIGURATION_CLP_GUID {0x345ecc0e,0xcb6,0x4b75, {0xbb,0x57,0x1b,0x12,0x9c,0x47,0x33,0x3e}} typedef struct _EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL; typedef enum { EfiPlatformConfigurationActionNone = 0, EfiPlatformConfigurationActionStopController = 1, EfiPlatformConfigurationActionRestartController = 2, EfiPlatformConfigurationActionRestartPlatform = 3, EfiPlatformConfigurationActionNvramFailed = 4, EfiPlatformConfigurationActionUnsupportedGuid = 5, EfiPlatformConfigurationActionMaximum } EFI_PLATFORM_CONFIGURATION_ACTION; typedef struct { CHAR8 *CLPCommand; UINT32 CLPCommandLength; CHAR8 *CLPReturnString; UINT32 CLPReturnStringLength; UINT8 CLPCmdStatus; UINT8 CLPErrorValue; UINT16 CLPMsgCode; } EFI_CONFIGURE_CLP_PARAMETER_BLK; typedef EFI_STATUS (EFIAPI *EFI_PLATFORM_TO_DRIVER_CONFIGURATION_QUERY)( IN EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN UINTN *Instance, OUT EFI_GUID **ParameterTypeGuid, OUT VOID **ParameterBlock, OUT UINTN *ParameterBlockSize ); typedef EFI_STATUS (EFIAPI *EFI_PLATFORM_TO_DRIVER_CONFIGURATION_RESPONSE)( IN EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN UINTN *Instance, IN EFI_GUID *ParameterTypeGuid, IN VOID *ParameterBlock, IN UINTN ParameterBlockSize, IN EFI_PLATFORM_CONFIGURATION_ACTION ConfigurationAction ); typedef struct _EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL { EFI_PLATFORM_TO_DRIVER_CONFIGURATION_QUERY Query; EFI_PLATFORM_TO_DRIVER_CONFIGURATION_RESPONSE Response; } EFI_PLATFORM_TO_DRIVER_CONFIGURATION_PROTOCOL; #endif /* EFI_PROTOCOLS_PLATFORM_TO_DRIVER_CONFIGURATION_H */