VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/MdeModulePkg/Universal/HiiResourcesSampleDxe/HiiResourcesSample.c@ 99404

最後變更 在這個檔案從99404是 99404,由 vboxsync 提交於 2 年 前

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

  • 屬性 svn:eol-style 設為 native
檔案大小: 3.3 KB
 
1/** @file
2This is an example of how a driver retrieve HII data using HII Package List
3Protocol, and how to publish the HII data.
4
5Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
6SPDX-License-Identifier: BSD-2-Clause-Patent
7
8**/
9
10#include <Uefi.h>
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>
18
19#pragma pack(1)
20///
21/// HII specific Vendor Device Path definition.
22///
23typedef struct {
24 VENDOR_DEVICE_PATH VendorDevicePath;
25 EFI_DEVICE_PATH_PROTOCOL End;
26} HII_VENDOR_DEVICE_PATH;
27#pragma pack()
28
29EFI_HII_HANDLE mHiiHandle = NULL;
30EFI_HANDLE mDriverHandle = NULL;
31
32HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath = {
33 {
34 {
35 HARDWARE_DEVICE_PATH,
36 HW_VENDOR_DP,
37 {
38 (UINT8)(sizeof (VENDOR_DEVICE_PATH)),
39 (UINT8)((sizeof (VENDOR_DEVICE_PATH)) >> 8)
40 }
41 },
42 HII_RESOURCE_SAMPLE_FORM_SET_GUID
43 },
44 {
45 END_DEVICE_PATH_TYPE,
46 END_ENTIRE_DEVICE_PATH_SUBTYPE,
47 {
48 (UINT8)(END_DEVICE_PATH_LENGTH),
49 (UINT8)((END_DEVICE_PATH_LENGTH) >> 8)
50 }
51 }
52};
53
54/**
55 Main entry for this driver.
56
57 @param[in] ImageHandle Image handle this driver.
58 @param[in] SystemTable Pointer to SystemTable.
59
60 @retval EFI_SUCESS This function always complete successfully.
61
62**/
63EFI_STATUS
64EFIAPI
65HiiResourcesSampleInit (
66 IN EFI_HANDLE ImageHandle,
67 IN EFI_SYSTEM_TABLE *SystemTable
68 )
69{
70 EFI_STATUS Status;
71 EFI_HII_PACKAGE_LIST_HEADER *PackageList;
72
73 //
74 // Retrieve HII package list from ImageHandle
75 //
76 Status = gBS->OpenProtocol (
77 ImageHandle,
78 &gEfiHiiPackageListProtocolGuid,
79 (VOID **)&PackageList,
80 ImageHandle,
81 NULL,
82 EFI_OPEN_PROTOCOL_GET_PROTOCOL
83 );
84 if (EFI_ERROR (Status)) {
85 return Status;
86 }
87
88 //
89 // Publish sample Fromset
90 //
91 Status = gBS->InstallProtocolInterface (
92 &mDriverHandle,
93 &gEfiDevicePathProtocolGuid,
94 EFI_NATIVE_INTERFACE,
95 &mHiiVendorDevicePath
96 );
97 if (EFI_ERROR (Status)) {
98 return Status;
99 }
100
101 //
102 // Publish HII package list to HII Database.
103 //
104 Status = gHiiDatabase->NewPackageList (
105 gHiiDatabase,
106 PackageList,
107 mDriverHandle,
108 &mHiiHandle
109 );
110 if (EFI_ERROR (Status)) {
111 return Status;
112 }
113
114 return EFI_SUCCESS;
115}
116
117/**
118 Unloads the application and its installed protocol.
119
120 @param[in] ImageHandle Handle that identifies the image to be unloaded.
121
122 @retval EFI_SUCCESS The image has been unloaded.
123**/
124EFI_STATUS
125EFIAPI
126HiiResourcesSampleUnload (
127 IN EFI_HANDLE ImageHandle
128 )
129{
130 if (mDriverHandle != NULL) {
131 gBS->UninstallProtocolInterface (
132 mDriverHandle,
133 &gEfiDevicePathProtocolGuid,
134 &mHiiVendorDevicePath
135 );
136 mDriverHandle = NULL;
137 }
138
139 if (mHiiHandle != NULL) {
140 HiiRemovePackages (mHiiHandle);
141 mHiiHandle = NULL;
142 }
143
144 return EFI_SUCCESS;
145}
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette