[BOOT:LIB] Implement BlpFwInitialize()
This commit is contained in:
parent
874d95ae4c
commit
5235ebdfa4
@ -23,6 +23,17 @@ typedef struct {
|
|||||||
ULONG Flags;
|
ULONG Flags;
|
||||||
} BOOT_LIBRARY_PARAMETERS, *PBOOT_LIBRARY_PARAMETERS;
|
} BOOT_LIBRARY_PARAMETERS, *PBOOT_LIBRARY_PARAMETERS;
|
||||||
|
|
||||||
|
VOID
|
||||||
|
ConsolePrint (
|
||||||
|
IN PWSTR String
|
||||||
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
ConsolePrintf (
|
||||||
|
IN PWSTR Format,
|
||||||
|
...
|
||||||
|
);
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
BlGetBootOptionSize (
|
BlGetBootOptionSize (
|
||||||
IN PBOOT_APPLICATION_ENTRY_OPTION Option
|
IN PBOOT_APPLICATION_ENTRY_OPTION Option
|
||||||
@ -33,6 +44,12 @@ BlGetBootOptionListSize (
|
|||||||
IN PBOOT_APPLICATION_ENTRY_OPTION Options
|
IN PBOOT_APPLICATION_ENTRY_OPTION Options
|
||||||
);
|
);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
BlpFwInitialize (
|
||||||
|
IN ULONG Stage,
|
||||||
|
IN PBOOT_FIRMWARE_DATA FirmwareData
|
||||||
|
);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
BlInitializeLibrary (
|
BlInitializeLibrary (
|
||||||
IN PBOOT_INPUT_PARAMETERS InputParameters,
|
IN PBOOT_INPUT_PARAMETERS InputParameters,
|
||||||
|
64
BOOT/ENVIRON/LIB/EFI/efifw.c
Normal file
64
BOOT/ENVIRON/LIB/EFI/efifw.c
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/*++
|
||||||
|
|
||||||
|
Copyright (c) 2024, Quinn Stephens.
|
||||||
|
Provided under the BSD 3-Clause license.
|
||||||
|
|
||||||
|
Module Name:
|
||||||
|
|
||||||
|
efifw.c
|
||||||
|
|
||||||
|
Abstract:
|
||||||
|
|
||||||
|
Provides EFI firmware utilities.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
#include "bootlib.h"
|
||||||
|
#include "bootmgr.h"
|
||||||
|
|
||||||
|
EFI_SYSTEM_TABLE *EfiST;
|
||||||
|
EFI_BOOT_SERVICES *EfiBS;
|
||||||
|
EFI_RUNTIME_SERVICES *EfiRT;
|
||||||
|
SIMPLE_TEXT_OUTPUT_INTERFACE *EfiConOut;
|
||||||
|
SIMPLE_INPUT_INTERFACE *EfiConIn;
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
BlpFwInitialize (
|
||||||
|
IN ULONG Stage,
|
||||||
|
IN PBOOT_FIRMWARE_DATA FirmwareData
|
||||||
|
)
|
||||||
|
|
||||||
|
/*++
|
||||||
|
|
||||||
|
Routine Description:
|
||||||
|
|
||||||
|
Internal routine to initialize the boot library.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
Stage - 0 or 1.
|
||||||
|
|
||||||
|
FirmwareData - firmware data structure to use for initialization.
|
||||||
|
|
||||||
|
Return Value:
|
||||||
|
|
||||||
|
STATUS_SUCCESS if successful,
|
||||||
|
STATUS_INVALID_PARAMETER if FirmwareData is invalid.
|
||||||
|
|
||||||
|
--*/
|
||||||
|
|
||||||
|
{
|
||||||
|
if (FirmwareData == NULL || FirmwareData->Version == 0) {
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Stage == 0) {
|
||||||
|
EfiST = FirmwareData->SystemTable;
|
||||||
|
EfiBS = EfiST->BootServices;
|
||||||
|
EfiRT = EfiST->RuntimeServices;
|
||||||
|
EfiConOut = EfiST->ConOut;
|
||||||
|
EfiConIn = EfiST->ConIn;
|
||||||
|
}
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
@ -128,6 +128,9 @@ Return Value:
|
|||||||
--*/
|
--*/
|
||||||
|
|
||||||
{
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
PBOOT_FIRMWARE_DATA FirmwareData;
|
||||||
|
|
||||||
(VOID)LibraryParameters;
|
(VOID)LibraryParameters;
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -139,6 +142,15 @@ Return Value:
|
|||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initialize firmware library.
|
||||||
|
//
|
||||||
|
FirmwareData = (PBOOT_FIRMWARE_DATA)((PUCHAR)InputParameters + InputParameters->FirmwareDataOffset);
|
||||||
|
Status = BlpFwInitialize(0, FirmwareData);
|
||||||
|
if (!NT_SUCCESS(Status)) {
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user