3 This file contains global defines and prototype definitions
6 Copyright (c) 2006, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 #ifndef _HIIDATABASE_H
18 #define _HIIDATABASE_H
23 #include <Guid/GlobalVariable.h>
24 #include <Protocol/FormCallbackFramework.h>
25 #include <Protocol/HiiFramework.h>
27 #include <Library/BaseLib.h>
28 #include <Library/DebugLib.h>
29 #include <Library/UefiDriverEntryPoint.h>
30 #include <Library/MemoryAllocationLib.h>
31 #include <Library/BaseMemoryLib.h>
32 #include <Library/UefiBootServicesTableLib.h>
33 #include <Library/UefiRuntimeServicesTableLib.h>
34 #include <Library/IfrSupportLibFramework.h>
37 // HII Database Global data
39 #define EFI_HII_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'i', 'P')
41 #define MAX_GLYPH_COUNT 65535
42 #define NARROW_GLYPH_ARRAY_SIZE 19
43 #define WIDE_GLYPH_ARRAY_SIZE 38
45 #define SETUP_MAP_NAME L"Setup"
46 #define HII_VARIABLE_SUFFIX_USER_DATA L"UserSavedData"
47 #define HII_VARIABLE_SUFFIX_DEFAULT_OVERRIDE L"DefaultOverride"
48 #define HII_VARIABLE_SUFFIX_MANUFACTURING_OVERRIDE L"ManufacturingOverride"
50 typedef struct _EFI_HII_HANDLE_DATABASE
{
51 VOID
*Buffer
; // Actual buffer pointer
52 EFI_HII_HANDLE Handle
; // Monotonically increasing value to signify the value returned to caller
53 UINT32 NumberOfTokens
; // The initial number of tokens when first registered
54 struct _EFI_HII_HANDLE_DATABASE
*NextHandleDatabase
;
55 } EFI_HII_HANDLE_DATABASE
;
58 EFI_NARROW_GLYPH NarrowGlyphs
[MAX_GLYPH_COUNT
];
59 EFI_WIDE_GLYPH WideGlyphs
[MAX_GLYPH_COUNT
];
60 EFI_KEY_DESCRIPTOR SystemKeyboardLayout
[106];
61 EFI_KEY_DESCRIPTOR OverrideKeyboardLayout
[106];
62 BOOLEAN SystemKeyboardUpdate
; // Has the SystemKeyboard been updated?
63 } EFI_HII_GLOBAL_DATA
;
68 EFI_HII_GLOBAL_DATA
*GlobalData
;
69 EFI_HII_HANDLE_DATABASE
*DatabaseHead
; // Head of the Null-terminated singly-linked list of handles.
74 EFI_HII_HANDLE Handle
;
76 EFI_HII_HANDLE_PACK HandlePack
;
79 EFI_HII_IFR_PACK
*IfrData
; // All the IFR data stored here
80 EFI_HII_STRING_PACK
*StringData
; // All the String data stored at &IfrData + IfrSize (StringData is just a label - never referenced)
81 } EFI_HII_PACKAGE_INSTANCE
;
84 EFI_HII_PACK_HEADER Header
;
85 EFI_IFR_FORM_SET FormSet
;
86 EFI_IFR_END_FORM_SET EndFormSet
;
89 #define EFI_HII_DATA_FROM_THIS(a) CR (a, EFI_HII_DATA, Hii, EFI_HII_DATA_SIGNATURE)
91 #define NARROW_WIDTH 8
94 extern UINT8 mUnknownGlyph
[38];
103 OUT UINT32
*NumberOfTokens
109 IN EFI_HII_PROTOCOL
*This
,
110 IN EFI_HII_PACKAGE_INSTANCE
*PackageInstance
,
111 OUT EFI_HII_PACKAGE_INSTANCE
**StringPackageInstance
,
112 OUT UINT32
*TotalStringCount
117 // Public Interface Prototypes
121 InitializeHiiDatabase (
122 IN EFI_HANDLE ImageHandle
,
123 IN EFI_SYSTEM_TABLE
*SystemTable
130 IN EFI_HII_PROTOCOL
*This
,
131 IN EFI_HII_PACKAGES
*PackageList
,
132 OUT EFI_HII_HANDLE
*Handle
139 IN EFI_HII_PROTOCOL
*This
,
140 IN EFI_HII_HANDLE Handle
147 IN EFI_HII_PROTOCOL
*This
,
148 IN OUT UINT16
*HandleBufferLength
,
149 OUT EFI_HII_HANDLE
*Handle
156 IN EFI_HII_PROTOCOL
*This
,
157 IN EFI_HII_HANDLE Handle
,
158 IN OUT UINTN
*BufferSize
,
166 IN EFI_HII_PROTOCOL
*This
,
168 IN OUT UINT16
*Index
,
169 OUT UINT8
**GlyphBuffer
,
170 OUT UINT16
*BitWidth
,
171 IN OUT UINT32
*InternalStatus
178 IN EFI_HII_PROTOCOL
*This
,
179 IN UINT8
*GlyphBuffer
,
180 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground
,
181 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background
,
185 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
192 IN EFI_HII_PROTOCOL
*This
,
194 IN EFI_HII_HANDLE Handle
,
195 IN OUT STRING_REF
*Reference
,
203 IN EFI_HII_PROTOCOL
*This
,
204 IN EFI_HII_HANDLE Handle
,
207 IN CHAR16
*LanguageString
,
208 IN OUT UINTN
*BufferLength
,
209 OUT EFI_STRING StringBuffer
216 IN EFI_HII_PROTOCOL
*This
,
217 IN EFI_HII_HANDLE Handle
224 IN EFI_HII_PROTOCOL
*This
,
225 IN CHAR16
*StringToTest
,
226 IN OUT UINT32
*FirstMissing
,
227 OUT UINT32
*GlyphBufferSize
233 HiiGetPrimaryLanguages (
234 IN EFI_HII_PROTOCOL
*This
,
235 IN EFI_HII_HANDLE Handle
,
236 OUT EFI_STRING
*LanguageString
242 HiiGetSecondaryLanguages (
243 IN EFI_HII_PROTOCOL
*This
,
244 IN EFI_HII_HANDLE Handle
,
245 IN CHAR16
*PrimaryLanguage
,
246 OUT EFI_STRING
*LanguageString
253 IN EFI_HII_PROTOCOL
*This
,
254 IN EFI_HII_HANDLE Handle
,
256 IN OUT UINT16
*Index
,
258 IN CHAR16
*LanguageString
,
259 IN OUT UINT16
*BufferLength
,
260 OUT EFI_STRING StringBuffer
267 IN EFI_HII_PROTOCOL
*This
,
268 IN EFI_HII_HANDLE Handle
,
269 IN EFI_FORM_ID FormId
,
270 IN OUT UINTN
*BufferLength
,
278 IN EFI_HII_PROTOCOL
*This
,
279 IN EFI_HII_HANDLE Handle
,
280 IN UINTN DefaultMask
,
281 OUT EFI_HII_VARIABLE_PACK_LIST
**VariablePackList
288 IN EFI_HII_PROTOCOL
*This
,
289 IN EFI_HII_HANDLE Handle
,
290 IN EFI_FORM_LABEL Label
,
292 IN EFI_HII_UPDATE_DATA
*Data
298 HiiGetKeyboardLayout (
299 IN EFI_HII_PROTOCOL
*This
,
300 OUT UINT16
*DescriptorCount
,
301 OUT EFI_KEY_DESCRIPTOR
*Descriptor
307 IN CHAR16
*LanguageStringLocation
,