3 This file contains global defines and prototype definitions
6 Copyright (c) 2006 - 2008, 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
21 #include <FrameworkDxe.h>
23 #include <Guid/GlobalVariable.h>
24 #include <Protocol/FrameworkFormCallback.h>
25 #include <Protocol/FrameworkHii.h>
26 #include <Protocol/FrameworkFormBrowser.h>
31 #include <Protocol/HiiFont.h>
32 #include <Protocol/HiiImage.h>
33 #include <Protocol/HiiString.h>
34 #include <Protocol/HiiDatabase.h>
35 #include <Protocol/HiiConfigRouting.h>
36 #include <Protocol/HiiConfigAccess.h>
39 #include <Library/BaseLib.h>
40 #include <Library/DebugLib.h>
41 #include <Library/UefiDriverEntryPoint.h>
42 #include <Library/MemoryAllocationLib.h>
43 #include <Library/BaseMemoryLib.h>
44 #include <Library/UefiBootServicesTableLib.h>
45 #include <Library/UefiRuntimeServicesTableLib.h>
46 #include <Library/HiiLib.h>
47 #include <Library/ExtendedHiiLib.h>
49 #include <Library/IfrSupportLib.h>
50 #include <Library/ExtendedIfrSupportLib.h>
52 #include <MdeModuleHii.h>
54 #pragma pack (push, 1)
57 EFI_HII_PACKAGE_HEADER PackageHeader
;
58 } TIANO_AUTOGEN_PACKAGES_HEADER
;
61 #define HII_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, HII_THUNK_PRIVATE_DATA, Hii, HII_THUNK_PRIVATE_DATA_SIGNATURE)
62 #define HII_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'I', 'T')
67 FRAMEWORK_EFI_HII_HANDLE StaticHiiHandle
;
68 FRAMEWORK_EFI_HII_HANDLE StaticPureUefiHiiHandle
;
71 // The head of link list for all HII_THUNK_CONTEXT.
73 LIST_ENTRY ThunkContextListHead
;
75 EFI_HANDLE RemovePackNotifyHandle
;
76 EFI_HANDLE AddPackNotifyHandle
;
77 } HII_THUNK_PRIVATE_DATA
;
81 #define ONE_OF_OPTION_MAP_ENTRY_FROM_LINK(Record) CR(Record, ONE_OF_OPTION_MAP_ENTRY, Link, ONE_OF_OPTION_MAP_ENTRY_SIGNATURE)
82 #define ONE_OF_OPTION_MAP_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('O', 'O', 'M', 'E')
88 EFI_IFR_TYPE_VALUE Value
;
90 } ONE_OF_OPTION_MAP_ENTRY
;
94 #define ONE_OF_OPTION_MAP_FROM_LINK(Record) CR(Record, ONE_OF_OPTION_MAP, Link, ONE_OF_OPTION_MAP_SIGNATURE)
95 #define ONE_OF_OPTION_MAP_SIGNATURE EFI_SIGNATURE_32 ('O', 'O', 'O', 'M')
100 UINT8 ValueType
; //EFI_IFR_TYPE_NUM_*
102 EFI_QUESTION_ID QuestionId
;
104 LIST_ENTRY OneOfOptionMapEntryListHead
; //ONE_OF_OPTION_MAP_ENTRY
109 #define QUESTION_ID_MAP_ENTRY_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP_ENTRY, Link, QUESTION_ID_MAP_ENTRY_SIGNATURE)
110 #define QUESTION_ID_MAP_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('Q', 'I', 'M', 'E')
115 EFI_QUESTION_ID UefiQid
;
116 } QUESTION_ID_MAP_ENTRY
;
120 #define QUESTION_ID_MAP_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP, Link, QUESTION_ID_MAP_SIGNATURE)
121 #define QUESTION_ID_MAP_SIGNATURE EFI_SIGNATURE_32 ('Q', 'I', 'M', 'P')
127 LIST_ENTRY MapEntryListHead
;
132 #define HII_THUNK_CONTEXT_FROM_LINK(Record) CR(Record, HII_THUNK_CONTEXT, Link, HII_THUNK_CONTEXT_SIGNATURE)
133 #define HII_THUNK_CONTEXT_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'H', 'M')
137 FRAMEWORK_EFI_HII_HANDLE FwHiiHandle
;
138 EFI_HII_HANDLE UefiHiiHandle
;
139 EFI_HANDLE UefiHiiDriverHandle
;
141 UINTN IfrPackageCount
;
142 UINTN StringPackageCount
;
145 // The field below is only valid if IsPackageListWithOnlyStringPack is TRUE.
146 // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption
147 // in both HII Database implementation and all modules that registering packages:
148 // If a Package List has only IFR package and no String Package, the IFR package will reference
149 // String in another Package List registered with the HII database with the same EFI_HII_PACKAGES.GuidId.
150 // TagGuid is the used to record this GuidId.
153 LIST_ENTRY QuestionIdMapListHead
; //QUESTION_ID_MAP
155 LIST_ENTRY OneOfOptionMapListHead
; //ONE_OF_OPTION_MAP
157 UINT8
*NvMapOverride
;
160 UINT16 FormSetSubClass
;
161 STRING_REF FormSetTitle
;
162 STRING_REF FormSetHelp
;
168 #define BUFFER_STORAGE_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 's', 'k')
169 #define BUFFER_STORAGE_ENTRY_FROM_LINK(Record) CR(Record, BUFFER_STORAGE_ENTRY, Link, BUFFER_STORAGE_ENTRY_SIGNATURE)
177 } BUFFER_STORAGE_ENTRY
;
181 #define CONFIG_ACCESS_PRIVATE_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'c', 'a')
182 #define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE)
185 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol
;
187 // Framework's callback
189 EFI_FORM_CALLBACK_PROTOCOL
*FormCallbackProtocol
;
191 LIST_ENTRY BufferStorageListHead
;
193 HII_THUNK_CONTEXT
*ThunkContext
;
194 } CONFIG_ACCESS_PRIVATE
;
198 #define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('F', 'B', 'T', 'd')
199 #define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, EFI_FORMBROWSER_THUNK_PRIVATE_DATA, FormBrowser, EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE)
203 HII_THUNK_PRIVATE_DATA
*ThunkPrivate
;
204 EFI_FORM_BROWSER_PROTOCOL FormBrowser
;
205 } EFI_FORMBROWSER_THUNK_PRIVATE_DATA
;
211 extern CONST EFI_HII_DATABASE_PROTOCOL
*mHiiDatabase
;
212 extern CONST EFI_HII_IMAGE_PROTOCOL
*mHiiImageProtocol
;
213 extern CONST EFI_HII_STRING_PROTOCOL
*mHiiStringProtocol
;
214 extern CONST EFI_HII_FONT_PROTOCOL
*mHiiFontProtocol
;
215 extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL
*mHiiConfigRoutingProtocol
;
216 extern CONST EFI_FORM_BROWSER2_PROTOCOL
*mFormBrowser2Protocol
;
218 extern HII_THUNK_PRIVATE_DATA
*mHiiThunkPrivateData
;
220 extern BOOLEAN mInFrameworkUpdatePakcage
;
228 // Public Interface Prototypes
232 InitializeHiiDatabase (
233 IN EFI_HANDLE ImageHandle
,
234 IN EFI_SYSTEM_TABLE
*SystemTable
241 IN EFI_HII_PROTOCOL
*This
,
242 IN EFI_HII_PACKAGES
*PackageList
,
243 OUT FRAMEWORK_EFI_HII_HANDLE
*Handle
250 IN EFI_HII_PROTOCOL
*This
,
251 IN FRAMEWORK_EFI_HII_HANDLE Handle
258 IN EFI_HII_PROTOCOL
*This
,
259 IN OUT UINT16
*HandleBufferLength
,
260 OUT FRAMEWORK_EFI_HII_HANDLE
*Handle
267 IN EFI_HII_PROTOCOL
*This
,
268 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
269 IN OUT UINTN
*BufferSize
,
277 IN EFI_HII_PROTOCOL
*This
,
279 IN OUT UINT16
*Index
,
280 OUT UINT8
**GlyphBuffer
,
281 OUT UINT16
*BitWidth
,
282 IN OUT UINT32
*InternalStatus
289 IN EFI_HII_PROTOCOL
*This
,
290 IN UINT8
*GlyphBuffer
,
291 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground
,
292 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background
,
296 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
303 IN EFI_HII_PROTOCOL
*This
,
305 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
306 IN OUT STRING_REF
*Reference
,
314 IN EFI_HII_PROTOCOL
*This
,
315 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
318 IN CHAR16
*LanguageString
,
319 IN OUT UINTN
*BufferLength
,
320 OUT EFI_STRING StringBuffer
327 IN EFI_HII_PROTOCOL
*This
,
328 IN FRAMEWORK_EFI_HII_HANDLE Handle
335 IN EFI_HII_PROTOCOL
*This
,
336 IN CHAR16
*StringToTest
,
337 IN OUT UINT32
*FirstMissing
,
338 OUT UINT32
*GlyphBufferSize
344 HiiGetPrimaryLanguages (
345 IN EFI_HII_PROTOCOL
*This
,
346 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
347 OUT EFI_STRING
*LanguageString
353 HiiGetSecondaryLanguages (
354 IN EFI_HII_PROTOCOL
*This
,
355 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
356 IN CHAR16
*PrimaryLanguage
,
357 OUT EFI_STRING
*LanguageString
364 IN EFI_HII_PROTOCOL
*This
,
365 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
367 IN OUT UINT16
*Index
,
369 IN CHAR16
*LanguageString
,
370 IN OUT UINT16
*BufferLength
,
371 OUT EFI_STRING StringBuffer
378 IN EFI_HII_PROTOCOL
*This
,
379 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
380 IN EFI_FORM_ID FormId
,
381 IN OUT UINTN
*BufferLength
,
389 IN EFI_HII_PROTOCOL
*This
,
390 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
391 IN UINTN DefaultMask
,
392 OUT EFI_HII_VARIABLE_PACK_LIST
**VariablePackList
399 IN EFI_HII_PROTOCOL
*This
,
400 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
401 IN EFI_FORM_LABEL Label
,
403 IN FRAMEWORK_EFI_HII_UPDATE_DATA
*Data
409 HiiGetKeyboardLayout (
410 IN EFI_HII_PROTOCOL
*This
,
411 OUT UINT16
*DescriptorCount
,
412 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR
*Descriptor
418 IN CHAR16
*LanguageStringLocation
,
428 IN EFI_FORM_BROWSER_PROTOCOL
*This
,
429 IN BOOLEAN UseDatabase
,
430 IN FRAMEWORK_EFI_HII_HANDLE
*Handle
,
431 IN UINTN HandleCount
,
432 IN FRAMEWORK_EFI_IFR_PACKET
*Packet
, OPTIONAL
433 IN EFI_HANDLE CallbackHandle
, OPTIONAL
434 IN UINT8
*NvMapOverride
, OPTIONAL
435 IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR
*ScreenDimensions
, OPTIONAL
436 OUT BOOLEAN
*ResetRequired OPTIONAL
442 IN UINTN NumberOfLines
,
444 IN UINTN MaximumStringSize
,
445 OUT CHAR16
*StringBuffer
,
446 OUT EFI_INPUT_KEY
*KeyValue
,
454 IN UINT8 PackageType
,
455 IN CONST EFI_GUID
*PackageGuid
,
456 IN CONST EFI_HII_PACKAGE_HEADER
*Package
,
457 IN EFI_HII_HANDLE Handle
,
458 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType
465 IN UINT8 PackageType
,
466 IN CONST EFI_GUID
*PackageGuid
,
467 IN CONST EFI_HII_PACKAGE_HEADER
*Package
,
468 IN EFI_HII_HANDLE Handle
,
469 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType
474 #include "ConfigAccess.h"