From 0ba0723c769f95d312835967c47e34e444fea368 Mon Sep 17 00:00:00 2001 From: kavsrf Date: Tue, 13 Jun 2017 17:19:47 +0300 Subject: solution of HP problem via DrverOrder and BML modified driver --- Library/CommonLib/EfiBml.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Library/CommonLib/EfiBml.c (limited to 'Library/CommonLib/EfiBml.c') diff --git a/Library/CommonLib/EfiBml.c b/Library/CommonLib/EfiBml.c new file mode 100644 index 0000000..184ca75 --- /dev/null +++ b/Library/CommonLib/EfiBml.c @@ -0,0 +1,57 @@ +/** @file +EFI DCS BML helpers routines/wrappers + +Copyright (c) 2016. Disk Cryptography Services for EFI (DCS), Alex Kolotnikov +Copyright (c) 2016. VeraCrypt, Mounir IDRASSI + +This program and the accompanying materials are licensed and made available +under the terms and conditions of the GNU Lesser General Public License, version 3.0 (LGPL-3.0). + +The full text of the license may be found at +https://opensource.org/licenses/LGPL-3.0 +**/ + +#include +#include +#include + +////////////////////////////////////////////////////////////////////////// +// BML +////////////////////////////////////////////////////////////////////////// +EFI_HANDLE* gBmlHandles = NULL; +UINTN gBmlCount = 0; +EFI_DCSBML_PROTOCOL* gBml = NULL; +EFI_GUID gBmlGuid = EFI_DCSBML_INTERFACE_PROTOCOL_GUID; + +EFI_STATUS +BmlSelect( + IN UINTN index) { + if (index < gBmlCount) { + return gBS->HandleProtocol(gBmlHandles[index], &gBmlGuid, (VOID**)&gBml); + } + return EFI_NOT_FOUND; +} + +EFI_STATUS +InitBml() { + EFI_STATUS res; + // BML control if supported + res = EfiGetHandles(ByProtocol, &gBmlGuid, 0, &gBmlHandles, &gBmlCount); + if (gBmlCount > 0) { + return BmlSelect(gBmlCount - 1); + } + return EFI_NOT_FOUND; +} + + +EFI_STATUS +BmlLock( + IN BOOLEAN lock + ) +{ + if (gBml != NULL) { + return gBml->BootMenuLock(gBml, lock); + } + return EFI_UNSUPPORTED; +} + -- cgit v1.2.3