diff options
Diffstat (limited to 'EDK/Foundation/Efi/Protocol/HiiConfigAccess')
-rw-r--r-- | EDK/Foundation/Efi/Protocol/HiiConfigAccess/HiiConfigAccess.c | 27 | ||||
-rw-r--r-- | EDK/Foundation/Efi/Protocol/HiiConfigAccess/HiiConfigAccess.h | 147 |
2 files changed, 174 insertions, 0 deletions
diff --git a/EDK/Foundation/Efi/Protocol/HiiConfigAccess/HiiConfigAccess.c b/EDK/Foundation/Efi/Protocol/HiiConfigAccess/HiiConfigAccess.c new file mode 100644 index 0000000..7e41697 --- /dev/null +++ b/EDK/Foundation/Efi/Protocol/HiiConfigAccess/HiiConfigAccess.c @@ -0,0 +1,27 @@ +/*++ + +Copyright (c) 2007, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + HiiConfigAccess.c + +Abstract: + + EFI_HII_CONFIG_ACCESS_PROTOCOL as defined in UEFI 2.1 spec. + +--*/ + +#include "EfiSpec.h" +#include EFI_PROTOCOL_DEFINITION (HiiConfigAccess) + +EFI_GUID gEfiHiiConfigAccessProtocolGuid = EFI_HII_CONFIG_ACCESS_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiHiiConfigAccessProtocolGuid, "HII Config Access Protocol", "HII Config Access 2.1 protocol"); diff --git a/EDK/Foundation/Efi/Protocol/HiiConfigAccess/HiiConfigAccess.h b/EDK/Foundation/Efi/Protocol/HiiConfigAccess/HiiConfigAccess.h new file mode 100644 index 0000000..9398488 --- /dev/null +++ b/EDK/Foundation/Efi/Protocol/HiiConfigAccess/HiiConfigAccess.h @@ -0,0 +1,147 @@ +/*++ + +Copyright (c) 2007, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +Module Name: + + HiiConfigAccess.h + +Abstract: + + EFI_HII_CONFIG_ACCESS_PROTOCOL as defined in UEFI 2.1 spec. + +--*/ + +#ifndef _HII_CONFIG_ACCESS_H_ +#define _HII_CONFIG_ACCESS_H_ + +#include EFI_PROTOCOL_DEFINITION (FormBrowser2) + +#define EFI_HII_CONFIG_ACCESS_PROTOCOL_GUID \ + { \ + 0x330d4706, 0xf2a0, 0x4e4f, 0xa3, 0x69, 0xb6, 0x6f, 0xa8, 0xd5, 0x43, 0x85 \ + } + +// +// Forward reference for pure ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_HII_CONFIG_ACCESS_PROTOCOL); + +typedef UINTN EFI_BROWSER_ACTION; + +#define EFI_BROWSER_ACTION_CHANGING 0 +#define EFI_BROWSER_ACTION_CHANGED 1 + + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_ACCESS_EXTRACT_CONFIG) ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Request, + OUT EFI_STRING *Progress, + OUT EFI_STRING *Results + ) +/*++ + + Routine Description: + This function allows a caller to extract the current configuration for one + or more named elements from the target driver. + + Arguments: + This - Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL. + Request - A null-terminated Unicode string in <ConfigRequest> format. + Progress - On return, points to a character in the Request string. + Points to the string's null terminator if request was successful. + Points to the most recent '&' before the first failing name/value + pair (or the beginning of the string if the failure is in the + first name/value pair) if the request was not successful. + Results - A null-terminated Unicode string in <ConfigAltResp> format which + has all values filled in for the names in the Request string. + String to be allocated by the called function. + + Returns: + EFI_SUCCESS - The Results is filled with the requested values. + EFI_OUT_OF_RESOURCES - Not enough memory to store the results. + EFI_INVALID_PARAMETER - Request is NULL, illegal syntax, or unknown name. + EFI_NOT_FOUND - Routing data doesn't match any storage in this driver. + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_ACCESS_ROUTE_CONFIG) ( + IN EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN CONST EFI_STRING Configuration, + OUT EFI_STRING *Progress + ) +/*++ + + Routine Description: + This function processes the results of changes in configuration. + + Arguments: + This - Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL. + Configuration - A null-terminated Unicode string in <ConfigResp> format. + Progress - A pointer to a string filled in with the offset of the most + recent '&' before the first failing name/value pair (or the + beginning of the string if the failure is in the first + name/value pair) or the terminating NULL if all was successful. + + Returns: + EFI_SUCCESS - The Results is processed successfully. + EFI_INVALID_PARAMETER - Configuration is NULL. + EFI_NOT_FOUND - Routing data doesn't match any storage in this driver. + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_ACCESS_FORM_CALLBACK) ( + IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, + IN EFI_BROWSER_ACTION Action, + IN EFI_QUESTION_ID QuestionId, + IN UINT8 Type, + IN EFI_IFR_TYPE_VALUE *Value, + OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest + ) +/*++ + + Routine Description: + This function processes the results of changes in configuration. + + Arguments: + This - Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL. + Action - Specifies the type of action taken by the browser. + QuestionId - A unique value which is sent to the original exporting driver + so that it can identify the type of data to expect. + Type - The type of value for the question. + Value - A pointer to the data being sent to the original exporting driver. + ActionRequest - On return, points to the action requested by the callback function. + + Returns: + EFI_SUCCESS - The callback successfully handled the action. + EFI_OUT_OF_RESOURCES - Not enough storage is available to hold the variable and its data. + EFI_DEVICE_ERROR - The variable could not be saved. + EFI_UNSUPPORTED - The specified Action is not supported by the callback. + +--*/ +; + +typedef struct _EFI_HII_CONFIG_ACCESS_PROTOCOL { + EFI_HII_ACCESS_EXTRACT_CONFIG ExtractConfig; + EFI_HII_ACCESS_ROUTE_CONFIG RouteConfig; + EFI_HII_ACCESS_FORM_CALLBACK Callback; +} EFI_HII_CONFIG_ACCESS_PROTOCOL; + +extern EFI_GUID gEfiHiiConfigAccessProtocolGuid; + +#endif |