2 HII Library implementation that uses DXE protocols and services.
4 Copyright (c) 2006, Intel Corporation<BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 #include <Protocol/DevicePath.h>
20 #include <Library/BaseMemoryLib.h>
21 #include <Library/DebugLib.h>
22 #include <Library/MemoryAllocationLib.h>
23 #include <Library/UefiBootServicesTableLib.h>
24 #include <MdeModuleHii.h>
28 // Hii vendor device path template
30 HII_VENDOR_DEVICE_PATH mHiiVendorDevicePathTemplate
= {
37 (UINT8
) (sizeof (HII_VENDOR_DEVICE_PATH_NODE
)),
38 (UINT8
) ((sizeof (HII_VENDOR_DEVICE_PATH_NODE
)) >> 8)
47 END_ENTIRE_DEVICE_PATH_SUBTYPE
,
49 END_DEVICE_PATH_LENGTH
57 HiiLibCreateHiiDriverHandle (
58 OUT EFI_HANDLE
*DriverHandle
62 HII_VENDOR_DEVICE_PATH_NODE
*VendorDevicePath
;
63 UINT64 MonotonicCount
;
65 VendorDevicePath
= AllocateCopyPool (sizeof (HII_VENDOR_DEVICE_PATH
), &mHiiVendorDevicePathTemplate
);
66 if (VendorDevicePath
== NULL
) {
67 return EFI_OUT_OF_RESOURCES
;
70 gBS
->GetNextMonotonicCount (&MonotonicCount
);
71 VendorDevicePath
->MonotonicCount
= (UINT32
) MonotonicCount
;
74 Status
= gBS
->InstallProtocolInterface (
76 &gEfiDevicePathProtocolGuid
,
80 if (EFI_ERROR (Status
)) {
90 HiiLibDestroyHiiDriverHandle (
91 IN EFI_HANDLE DriverHandle
95 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
97 Status
= gBS
->HandleProtocol (
99 &gEfiDevicePathProtocolGuid
,
100 (VOID
**) &DevicePath
102 ASSERT_EFI_ERROR (Status
);
104 Status
= gBS
->UninstallProtocolInterface (
106 &gEfiDevicePathProtocolGuid
,
109 ASSERT_EFI_ERROR (Status
);
111 FreePool (DevicePath
);