]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Library/BootManagerLib/BootManager.h
3ddef6683108869869bd1de57649a2d3e189dfd1
[mirror_edk2.git] / MdeModulePkg / Library / BootManagerLib / BootManager.h
1 /** @file
2 The boot manager reference implement
3
4 Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
5 This software and associated documentation (if any) is furnished
6 under a license and may only be used or copied in accordance
7 with the terms of the license. Except as permitted by such
8 license, no part of this software or documentation may be
9 reproduced, stored in a retrieval system, or transmitted in any
10 form or by any means without the express written consent of
11 Intel Corporation.
12
13 **/
14
15 #ifndef _EFI_BOOT_MANAGER_H_
16 #define _EFI_BOOT_MANAGER_H_
17
18 #include <Guid/MdeModuleHii.h>
19 #include <Guid/GlobalVariable.h>
20
21 #include <Protocol/HiiConfigAccess.h>
22 #include <Protocol/DevicePathToText.h>
23
24 #include <Library/PrintLib.h>
25 #include <Library/DebugLib.h>
26 #include <Library/BaseMemoryLib.h>
27 #include <Library/UefiBootServicesTableLib.h>
28 #include <Library/UefiLib.h>
29 #include <Library/MemoryAllocationLib.h>
30 #include <Library/UefiRuntimeServicesTableLib.h>
31 #include <Library/HiiLib.h>
32 #include <Library/DevicePathLib.h>
33 #include <Library/UefiBootManagerLib.h>
34
35 #pragma pack(1)
36
37 ///
38 /// HII specific Vendor Device Path definition.
39 ///
40 typedef struct {
41 VENDOR_DEVICE_PATH VendorDevicePath;
42 EFI_DEVICE_PATH_PROTOCOL End;
43 } HII_VENDOR_DEVICE_PATH;
44 #pragma pack()
45
46 //
47 // These are defined as the same with vfr file
48 //
49 #define BOOT_MANAGER_FORMSET_GUID \
50 { \
51 0x847bc3fe, 0xb974, 0x446d, {0x94, 0x49, 0x5a, 0xd5, 0x41, 0x2e, 0x99, 0x3b} \
52 }
53
54 #define BOOT_MANAGER_FORM_ID 0x1000
55
56 #define LABEL_BOOT_OPTION 0x00
57 #define LABEL_BOOT_OPTION_END 0x01
58
59 //
60 // Variable created with this flag will be "Efi:...."
61 //
62 #define VAR_FLAG EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE
63
64 //
65 // These are the VFR compiler generated data representing our VFR data.
66 //
67 extern UINT8 BootManagerVfrBin[];
68
69 #define BOOT_MANAGER_CALLBACK_DATA_SIGNATURE SIGNATURE_32 ('B', 'M', 'C', 'B')
70
71 typedef struct {
72 UINTN Signature;
73
74 //
75 // HII relative handles
76 //
77 EFI_HII_HANDLE HiiHandle;
78 EFI_HANDLE DriverHandle;
79
80 //
81 // Produced protocols
82 //
83 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
84 } BOOT_MANAGER_CALLBACK_DATA;
85
86 /**
87 This call back function is registered with Boot Manager formset.
88 When user selects a boot option, this call back function will
89 be triggered. The boot option is saved for later processing.
90
91
92 @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
93 @param Action Specifies the type of action taken by the browser.
94 @param QuestionId A unique value which is sent to the original exporting driver
95 so that it can identify the type of data to expect.
96 @param Type The type of value for the question.
97 @param Value A pointer to the data being sent to the original exporting driver.
98 @param ActionRequest On return, points to the action requested by the callback function.
99
100 @retval EFI_SUCCESS The callback successfully handled the action.
101 @retval EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters.
102
103 **/
104 EFI_STATUS
105 EFIAPI
106 BootManagerCallback (
107 IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
108 IN EFI_BROWSER_ACTION Action,
109 IN EFI_QUESTION_ID QuestionId,
110 IN UINT8 Type,
111 IN EFI_IFR_TYPE_VALUE *Value,
112 OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
113 );
114
115 /**
116 This function allows a caller to extract the current configuration for one
117 or more named elements from the target driver.
118
119
120 @param This - Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
121 @param Request - A null-terminated Unicode string in <ConfigRequest> format.
122 @param Progress - On return, points to a character in the Request string.
123 Points to the string's null terminator if request was successful.
124 Points to the most recent '&' before the first failing name/value
125 pair (or the beginning of the string if the failure is in the
126 first name/value pair) if the request was not successful.
127 @param Results - A null-terminated Unicode string in <ConfigAltResp> format which
128 has all values filled in for the names in the Request string.
129 String to be allocated by the called function.
130
131 @retval EFI_SUCCESS The Results is filled with the requested values.
132 @retval EFI_OUT_OF_RESOURCES Not enough memory to store the results.
133 @retval EFI_INVALID_PARAMETER Request is NULL, illegal syntax, or unknown name.
134 @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.
135
136 **/
137 EFI_STATUS
138 EFIAPI
139 BootManagerExtractConfig (
140 IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
141 IN CONST EFI_STRING Request,
142 OUT EFI_STRING *Progress,
143 OUT EFI_STRING *Results
144 );
145
146 /**
147 This function processes the results of changes in configuration.
148
149
150 @param This - Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
151 @param Configuration - A null-terminated Unicode string in <ConfigResp> format.
152 @param Progress - A pointer to a string filled in with the offset of the most
153 recent '&' before the first failing name/value pair (or the
154 beginning of the string if the failure is in the first
155 name/value pair) or the terminating NULL if all was successful.
156
157 @retval EFI_SUCCESS The Results is processed successfully.
158 @retval EFI_INVALID_PARAMETER Configuration is NULL.
159 @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.
160
161 **/
162 EFI_STATUS
163 EFIAPI
164 BootManagerRouteConfig (
165 IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
166 IN CONST EFI_STRING Configuration,
167 OUT EFI_STRING *Progress
168 );
169
170 #endif