2 This is an example of how a driver retrieve HII data using HII Package List
3 Protocol, and how to publish the HII data.
5 Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
11 #include <Guid/HiiResourceSampleHii.h>
12 #include <Protocol/HiiPackageList.h>
13 #include <Library/DevicePathLib.h>
14 #include <Library/UefiDriverEntryPoint.h>
15 #include <Library/UefiBootServicesTableLib.h>
16 #include <Library/UefiHiiServicesLib.h>
17 #include <Library/HiiLib.h>
21 /// HII specific Vendor Device Path definition.
24 VENDOR_DEVICE_PATH VendorDevicePath
;
25 EFI_DEVICE_PATH_PROTOCOL End
;
26 } HII_VENDOR_DEVICE_PATH
;
30 EFI_HII_HANDLE mHiiHandle
= NULL
;
31 EFI_HANDLE mDriverHandle
= NULL
;
33 HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath
= {
39 (UINT8
) (sizeof (VENDOR_DEVICE_PATH
)),
40 (UINT8
) ((sizeof (VENDOR_DEVICE_PATH
)) >> 8)
43 HII_RESOURCE_SAMPLE_FORM_SET_GUID
47 END_ENTIRE_DEVICE_PATH_SUBTYPE
,
49 (UINT8
) (END_DEVICE_PATH_LENGTH
),
50 (UINT8
) ((END_DEVICE_PATH_LENGTH
) >> 8)
56 Main entry for this driver.
58 @param[in] ImageHandle Image handle this driver.
59 @param[in] SystemTable Pointer to SystemTable.
61 @retval EFI_SUCESS This function always complete successfully.
66 HiiResourcesSampleInit (
67 IN EFI_HANDLE ImageHandle
,
68 IN EFI_SYSTEM_TABLE
*SystemTable
72 EFI_HII_PACKAGE_LIST_HEADER
*PackageList
;
75 // Retrieve HII package list from ImageHandle
77 Status
= gBS
->OpenProtocol (
79 &gEfiHiiPackageListProtocolGuid
,
80 (VOID
**) &PackageList
,
83 EFI_OPEN_PROTOCOL_GET_PROTOCOL
85 if (EFI_ERROR (Status
)) {
90 // Publish sample Fromset
92 Status
= gBS
->InstallProtocolInterface (
94 &gEfiDevicePathProtocolGuid
,
98 if (EFI_ERROR (Status
)) {
103 // Publish HII package list to HII Database.
105 Status
= gHiiDatabase
->NewPackageList (
111 if (EFI_ERROR (Status
)) {
119 Unloads the application and its installed protocol.
121 @param[in] ImageHandle Handle that identifies the image to be unloaded.
123 @retval EFI_SUCCESS The image has been unloaded.
127 HiiResourcesSampleUnload (
128 IN EFI_HANDLE ImageHandle
131 if (mDriverHandle
!= NULL
) {
132 gBS
->UninstallProtocolInterface (
134 &gEfiDevicePathProtocolGuid
,
135 &mHiiVendorDevicePath
137 mDriverHandle
= NULL
;
140 if (mHiiHandle
!= NULL
) {
141 HiiRemovePackages (mHiiHandle
);