mirror of
https://github.com/reactos/reactos.git
synced 2025-05-07 10:46:58 +00:00
[ROSLOAD]: Begin target preparation code. 1/104.
[ROSLOAD]: Stubs for OslFatalErrorEx, OslAbortBoot. OslpSanitizeLoadOptionsString, OslpSanitizeStringOptions [ROSLOAD]: Implement OslBlStatusErrorHandler, OslpRemoveInternalApplicationOptions [ROSLOAD]: Begin work on OslPrepareTarget. Small misc. fixes. [BOOTLIB]: Extend BlStatusError to handle a custom status error handler.
This commit is contained in:
parent
3b777fd133
commit
adcb9bd175
5 changed files with 334 additions and 12 deletions
|
@ -18,7 +18,7 @@ OslArchTransferToKernel (
|
||||||
|
|
||||||
/* DATA VARIABLES ************************************************************/
|
/* DATA VARIABLES ************************************************************/
|
||||||
|
|
||||||
LOADER_PARAMETER_BLOCK OslLoaderBlock;
|
PLOADER_PARAMETER_BLOCK OslLoaderBlock;
|
||||||
PVOID OslEntryPoint;
|
PVOID OslEntryPoint;
|
||||||
PVOID UserSharedAddress;
|
PVOID UserSharedAddress;
|
||||||
ULONGLONG ArchXCr0BitsToClear;
|
ULONGLONG ArchXCr0BitsToClear;
|
||||||
|
@ -27,15 +27,296 @@ BOOLEAN BdDebugAfterExitBootServices;
|
||||||
KDESCRIPTOR OslKernelGdt;
|
KDESCRIPTOR OslKernelGdt;
|
||||||
KDESCRIPTOR OslKernelIdt;
|
KDESCRIPTOR OslKernelIdt;
|
||||||
|
|
||||||
|
ULONG_PTR OslImcHiveHandle;
|
||||||
|
ULONG_PTR OslMachineHiveHandle;
|
||||||
|
ULONG_PTR OslElamHiveHandle;
|
||||||
|
ULONG_PTR OslSystemHiveHandle;
|
||||||
|
|
||||||
|
PBL_DEVICE_DESCRIPTOR OslLoadDevice;
|
||||||
|
PCHAR OslLoadOptions;
|
||||||
|
PWCHAR OslSystemRoot;
|
||||||
|
|
||||||
|
LIST_ENTRY OslFreeMemoryDesctiptorsList;
|
||||||
|
LIST_ENTRY OslFinalMemoryMap;
|
||||||
|
LIST_ENTRY OslCoreExtensionSubGroups[2];
|
||||||
|
LIST_ENTRY OslLoadedFirmwareDriverList;
|
||||||
|
|
||||||
|
BL_BUFFER_DESCRIPTOR OslFinalMemoryMapDescriptorsBuffer;
|
||||||
|
|
||||||
|
GUID OslApplicationIdentifier;
|
||||||
|
|
||||||
|
ULONG OslResetBootStatus;
|
||||||
|
BOOLEAN OslImcProcessingValid;
|
||||||
|
ULONG OslFreeMemoryDesctiptorsListSize;
|
||||||
|
PVOID OslMemoryDescriptorBuffer;
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
VOID
|
||||||
|
OslFatalErrorEx (
|
||||||
|
_In_ ULONG ErrorCode,
|
||||||
|
_In_ ULONG Parameter1,
|
||||||
|
_In_ ULONG_PTR Parameter2,
|
||||||
|
_In_ ULONG_PTR Parameter3
|
||||||
|
)
|
||||||
|
{
|
||||||
|
/* For now just do this */
|
||||||
|
BlStatusPrint(L"FATAL ERROR IN ROSLOAD: %lx\n", ErrorCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
OslAbortBoot (
|
||||||
|
_In_ NTSTATUS Status
|
||||||
|
)
|
||||||
|
{
|
||||||
|
/* For now just do this */
|
||||||
|
BlStatusPrint(L"BOOT ABORTED: %lx\n", Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
OslBlStatusErrorHandler (
|
||||||
|
_In_ ULONG ErrorCode,
|
||||||
|
_In_ ULONG Parameter1,
|
||||||
|
_In_ ULONG_PTR Parameter2,
|
||||||
|
_In_ ULONG_PTR Parameter3,
|
||||||
|
_In_ ULONG_PTR Parameter4
|
||||||
|
)
|
||||||
|
{
|
||||||
|
/* We only filter error code 4 */
|
||||||
|
if (ErrorCode != 4)
|
||||||
|
{
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Handle error 4 as a fatal error 3 internally */
|
||||||
|
OslFatalErrorEx(3, Parameter1, Parameter2, Parameter3);
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
OslpSanitizeLoadOptionsString (
|
||||||
|
_In_ PWCHAR OptionString,
|
||||||
|
_In_ PWCHAR SanitizeString
|
||||||
|
)
|
||||||
|
{
|
||||||
|
/* TODO */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
OslpSanitizeStringOptions (
|
||||||
|
_In_ PBL_BCD_OPTION BcdOptions
|
||||||
|
)
|
||||||
|
{
|
||||||
|
/* TODO */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
OslpRemoveInternalApplicationOptions (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
PWCHAR LoadString;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
/* Assume success */
|
||||||
|
Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
/* Remove attempts to disable integrity checks or ELAM driver load */
|
||||||
|
BlRemoveBootOption(BlpApplicationEntry.BcdData,
|
||||||
|
BcdLibraryBoolean_DisableIntegrityChecks);
|
||||||
|
BlRemoveBootOption(BlpApplicationEntry.BcdData,
|
||||||
|
BcdOSLoaderBoolean_DisableElamDrivers);
|
||||||
|
|
||||||
|
/* Get the command-line parameters, if any */
|
||||||
|
Status = BlGetBootOptionString(BlpApplicationEntry.BcdData,
|
||||||
|
BcdLibraryString_LoadOptionsString,
|
||||||
|
&LoadString);
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
/* Conver to upper case */
|
||||||
|
_wcsupr(LoadString);
|
||||||
|
|
||||||
|
/* Remove the existing one */
|
||||||
|
//BlRemoveBootOption(BlpApplicationEntry.BcdData,
|
||||||
|
// BcdLibraryString_LoadOptionsString);
|
||||||
|
|
||||||
|
/* Sanitize strings we don't want */
|
||||||
|
OslpSanitizeLoadOptionsString(LoadString, L"DISABLE_INTEGRITY_CHECKS");
|
||||||
|
OslpSanitizeLoadOptionsString(LoadString, L"NOINTEGRITYCHECKS");
|
||||||
|
OslpSanitizeLoadOptionsString(LoadString, L"DISABLEELAMDRIVERS");
|
||||||
|
|
||||||
|
/* Add the sanitized one back */
|
||||||
|
//Status = BlAppendBootOptionsString(&BlpApplicationEntry,
|
||||||
|
// BcdLibraryString_LoadOptionsString,
|
||||||
|
// LoadString);
|
||||||
|
|
||||||
|
/* Free the original BCD one */
|
||||||
|
BlMmFreeHeap(LoadString);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* One more pass for secure-boot options */
|
||||||
|
OslpSanitizeStringOptions(BlpApplicationEntry.BcdData);
|
||||||
|
|
||||||
|
/* All good */
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
OslPrepareTarget (
|
OslPrepareTarget (
|
||||||
_Out_ PULONG ReturnFlags,
|
_Out_ PULONG ReturnFlags,
|
||||||
_Out_ PBOOLEAN Jump
|
_Out_ PBOOLEAN Jump
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
PGUID AppId;
|
||||||
|
NTSTATUS Status;
|
||||||
|
PBL_DEVICE_DESCRIPTOR OsDevice;
|
||||||
|
PWCHAR SystemRoot;
|
||||||
|
SIZE_T RootLength, RootLengthWithSep;
|
||||||
|
ULONG i;
|
||||||
|
ULONG64 StartPerf, EndPerf;
|
||||||
|
|
||||||
|
/* Assume no flags */
|
||||||
|
*ReturnFlags = 0;
|
||||||
|
|
||||||
|
/* Make all registry handles invalid */
|
||||||
|
OslImcHiveHandle = -1;
|
||||||
|
OslMachineHiveHandle = -1;
|
||||||
|
OslElamHiveHandle = -1;
|
||||||
|
OslSystemHiveHandle = -1;
|
||||||
|
|
||||||
|
/* Initialize memory lists */
|
||||||
|
InitializeListHead(&OslFreeMemoryDesctiptorsList);
|
||||||
|
InitializeListHead(&OslFinalMemoryMap);
|
||||||
|
InitializeListHead(&OslLoadedFirmwareDriverList);
|
||||||
|
for (i = 0; i < RTL_NUMBER_OF(OslCoreExtensionSubGroups); i++)
|
||||||
|
{
|
||||||
|
InitializeListHead(&OslCoreExtensionSubGroups[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Initialize the memory map descriptor buffer */
|
||||||
|
RtlZeroMemory(&OslFinalMemoryMapDescriptorsBuffer,
|
||||||
|
sizeof(OslFinalMemoryMapDescriptorsBuffer));
|
||||||
|
|
||||||
|
/* Initialize general pointers */
|
||||||
|
OslLoadDevice = NULL;
|
||||||
|
OslLoadOptions = NULL;
|
||||||
|
OslSystemRoot = NULL;
|
||||||
|
OslLoaderBlock = NULL;
|
||||||
|
OslMemoryDescriptorBuffer = NULL;
|
||||||
|
|
||||||
|
/* Initialize general variables */
|
||||||
|
OslResetBootStatus = 0;
|
||||||
|
OslImcProcessingValid = FALSE;
|
||||||
|
OslFreeMemoryDesctiptorsListSize = 0;
|
||||||
|
|
||||||
|
/* Capture the current TSC */
|
||||||
|
StartPerf = BlArchGetPerformanceCounter();
|
||||||
|
|
||||||
|
#ifdef BL_TPM_SUPPORT
|
||||||
|
BlpSbdiCurrentApplicationType = 0x10200003;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Register an error handler */
|
||||||
|
BlpStatusErrorHandler = OslBlStatusErrorHandler;
|
||||||
|
|
||||||
|
/* Get the application identifier and save it */
|
||||||
|
AppId = BlGetApplicationIdentifier();
|
||||||
|
if (AppId)
|
||||||
|
{
|
||||||
|
OslApplicationIdentifier = *AppId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enable tracing */
|
||||||
|
#ifdef BL_ETW_SUPPORT
|
||||||
|
TraceLoggingRegister(&TlgOslBootProviderProv);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Remove dangerous BCD options */
|
||||||
|
Status = OslpRemoveInternalApplicationOptions();
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
goto Quickie;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get the OS device */
|
||||||
|
Status = BlGetBootOptionDevice(BlpApplicationEntry.BcdData,
|
||||||
|
BcdOSLoaderDevice_OSDevice,
|
||||||
|
&OsDevice,
|
||||||
|
0);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
goto Quickie;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If the OS device is the boot device, use the one provided by bootlib */
|
||||||
|
if (OsDevice->DeviceType == BootDevice)
|
||||||
|
{
|
||||||
|
OsDevice = BlpBootDevice;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Save it as a global for later */
|
||||||
|
OslLoadDevice = OsDevice;
|
||||||
|
|
||||||
|
/* Get the system root */
|
||||||
|
Status = BlGetBootOptionString(BlpApplicationEntry.BcdData,
|
||||||
|
BcdOSLoaderString_SystemRoot,
|
||||||
|
&SystemRoot);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
goto Quickie;
|
||||||
|
}
|
||||||
|
|
||||||
|
EfiPrintf(L"System root: %s\r\n", SystemRoot);
|
||||||
|
|
||||||
|
/* Get the system root length and make sure it's slash-terminated */
|
||||||
|
RootLength = wcslen(SystemRoot);
|
||||||
|
if (SystemRoot[RootLength - 1] == OBJ_NAME_PATH_SEPARATOR)
|
||||||
|
{
|
||||||
|
/* Perfect, set it */
|
||||||
|
OslSystemRoot = SystemRoot;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Allocate a new buffer large enough to contain the slash */
|
||||||
|
RootLengthWithSep = RootLength + sizeof(OBJ_NAME_PATH_SEPARATOR);
|
||||||
|
OslSystemRoot = BlMmAllocateHeap(RootLengthWithSep * sizeof(WCHAR));
|
||||||
|
if (!OslSystemRoot)
|
||||||
|
{
|
||||||
|
/* Bail out if we're out of memory */
|
||||||
|
Status = STATUS_NO_MEMORY;
|
||||||
|
goto Quickie;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make a copy of the path, adding the separator */
|
||||||
|
wcscpy(OslSystemRoot, SystemRoot);
|
||||||
|
wcscat(OslSystemRoot, L"\\");
|
||||||
|
|
||||||
|
/* Free the original one from the BCD library */
|
||||||
|
BlMmFreeHeap(SystemRoot);
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = STATUS_NOT_IMPLEMENTED;
|
||||||
|
|
||||||
|
/* Printf perf */
|
||||||
|
EndPerf = BlArchGetPerformanceCounter();
|
||||||
|
EfiPrintf(L"Delta: %lld\r\n", EndPerf - StartPerf);
|
||||||
|
|
||||||
|
Quickie:
|
||||||
|
#if BL_BITLOCKER_SUPPORT
|
||||||
|
/* Destroy the RNG/AES library for BitLocker */
|
||||||
|
SymCryptRngAesUninstantiate();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Abort the boot */
|
||||||
|
OslAbortBoot(Status);
|
||||||
|
|
||||||
|
/* This is a failure path, so never do the jump */
|
||||||
|
*Jump = FALSE;
|
||||||
|
|
||||||
|
/* Return error code */
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
@ -132,11 +413,11 @@ OslExecuteTransition (
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Setup Firmware for Phase 1 */
|
/* Setup Firmware for Phase 1 */
|
||||||
Status = OslFwpKernelSetupPhase1(&OslLoaderBlock);
|
Status = OslFwpKernelSetupPhase1(OslLoaderBlock);
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
/* Setup kernel for Phase 2 */
|
/* Setup kernel for Phase 2 */
|
||||||
Status = OslArchKernelSetup(2, &OslLoaderBlock);
|
Status = OslArchKernelSetup(2, OslLoaderBlock);
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
#ifdef BL_KD_SUPPORT
|
#ifdef BL_KD_SUPPORT
|
||||||
|
@ -144,7 +425,7 @@ OslExecuteTransition (
|
||||||
BlBdStop();
|
BlBdStop();
|
||||||
#endif
|
#endif
|
||||||
/* Jump to the kernel entrypoint */
|
/* Jump to the kernel entrypoint */
|
||||||
OslArchTransferToKernel(&OslLoaderBlock, OslEntryPoint);
|
OslArchTransferToKernel(OslLoaderBlock, OslEntryPoint);
|
||||||
|
|
||||||
/* Infinite loop if we got here */
|
/* Infinite loop if we got here */
|
||||||
for (;;);
|
for (;;);
|
||||||
|
|
|
@ -742,6 +742,15 @@ typedef BOOLEAN
|
||||||
_Out_opt_ PULONG CacheAttributes
|
_Out_opt_ PULONG CacheAttributes
|
||||||
);
|
);
|
||||||
|
|
||||||
|
typedef NTSTATUS
|
||||||
|
(*PBL_STATUS_ERROR_HANDLER) (
|
||||||
|
_In_ ULONG ErrorCode,
|
||||||
|
_In_ ULONG Parameter1,
|
||||||
|
_In_ ULONG_PTR Parameter2,
|
||||||
|
_In_ ULONG_PTR Parameter3,
|
||||||
|
_In_ ULONG_PTR Parameter4
|
||||||
|
);
|
||||||
|
|
||||||
/* DATA STRUCTURES ***********************************************************/
|
/* DATA STRUCTURES ***********************************************************/
|
||||||
|
|
||||||
typedef struct _BL_LIBRARY_PARAMETERS
|
typedef struct _BL_LIBRARY_PARAMETERS
|
||||||
|
@ -1277,12 +1286,12 @@ typedef struct _BL_IMAGE_APPLICATION_ENTRY
|
||||||
ULONG ImageSize;
|
ULONG ImageSize;
|
||||||
} BL_IMAGE_APPLICATION_ENTRY, *PBL_IMAGE_APPLICATION_ENTRY;
|
} BL_IMAGE_APPLICATION_ENTRY, *PBL_IMAGE_APPLICATION_ENTRY;
|
||||||
|
|
||||||
typedef struct _BL_IMAGE_PARAMETERS
|
typedef struct _BL_BUFFER_DESCRIPTOR
|
||||||
{
|
{
|
||||||
PVOID Buffer;
|
PVOID Buffer;
|
||||||
ULONG ActualSize;
|
ULONG ActualSize;
|
||||||
ULONG BufferSize;
|
ULONG BufferSize;
|
||||||
} BL_IMAGE_PARAMETERS, *PBL_IMAGE_PARAMETERS;
|
} BL_BUFFER_DESCRIPTOR, *PBL_BUFFER_DESCRIPTOR;
|
||||||
|
|
||||||
typedef struct _BL_DEFERRED_FONT_FILE
|
typedef struct _BL_DEFERRED_FONT_FILE
|
||||||
{
|
{
|
||||||
|
@ -2287,7 +2296,7 @@ BlMmRemoveBadMemory (
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
BlMmGetMemoryMap (
|
BlMmGetMemoryMap (
|
||||||
_In_ PLIST_ENTRY MemoryMap,
|
_In_ PLIST_ENTRY MemoryMap,
|
||||||
_In_ PBL_IMAGE_PARAMETERS MemoryParameters,
|
_In_ PBL_BUFFER_DESCRIPTOR MemoryParameters,
|
||||||
_In_ ULONG WhichTypes,
|
_In_ ULONG WhichTypes,
|
||||||
_In_ ULONG Flags
|
_In_ ULONG Flags
|
||||||
);
|
);
|
||||||
|
@ -2831,5 +2840,6 @@ extern PBL_MM_RELOCATE_SELF_MAP BlMmRelocateSelfMap;
|
||||||
extern PBL_MM_FLUSH_TLB BlMmFlushTlb;
|
extern PBL_MM_FLUSH_TLB BlMmFlushTlb;
|
||||||
extern PBL_MM_MOVE_VIRTUAL_ADDRESS_RANGE BlMmMoveVirtualAddressRange;
|
extern PBL_MM_MOVE_VIRTUAL_ADDRESS_RANGE BlMmMoveVirtualAddressRange;
|
||||||
extern PBL_MM_ZERO_VIRTUAL_ADDRESS_RANGE BlMmZeroVirtualAddressRange;
|
extern PBL_MM_ZERO_VIRTUAL_ADDRESS_RANGE BlMmZeroVirtualAddressRange;
|
||||||
|
extern PBL_STATUS_ERROR_HANDLER BlpStatusErrorHandler;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -16,6 +16,8 @@ CHAR AnsiBuffer[1024];
|
||||||
BOOLEAN BdDebuggerNotPresent;
|
BOOLEAN BdDebuggerNotPresent;
|
||||||
BOOLEAN BdSubsystemInitialized;
|
BOOLEAN BdSubsystemInitialized;
|
||||||
BOOLEAN BdArchBlockDebuggerOperation;
|
BOOLEAN BdArchBlockDebuggerOperation;
|
||||||
|
BOOLEAN BlpStatusErrorInProgress;
|
||||||
|
PBL_STATUS_ERROR_HANDLER BlpStatusErrorHandler;
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
@ -124,6 +126,35 @@ BlStatusError (
|
||||||
_In_ ULONG_PTR Parameter4
|
_In_ ULONG_PTR Parameter4
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
/* Is this a non-boot error? */
|
||||||
|
if (ErrorCode != 1)
|
||||||
|
{
|
||||||
|
/* Is one already ongoing? */
|
||||||
|
if (!BlpStatusErrorInProgress)
|
||||||
|
{
|
||||||
|
/* Do we have a custom error handler registered? */
|
||||||
|
if (BlpStatusErrorHandler)
|
||||||
|
{
|
||||||
|
/* Call it, making sure to avoid recursion */
|
||||||
|
BlpStatusErrorInProgress = TRUE;
|
||||||
|
Status = BlpStatusErrorHandler(ErrorCode,
|
||||||
|
Parameter1,
|
||||||
|
Parameter2,
|
||||||
|
Parameter3,
|
||||||
|
Parameter4);
|
||||||
|
BlpStatusErrorInProgress = FALSE;
|
||||||
|
|
||||||
|
/* If the error handler consumed the error, we're done */
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Check if the boot debugger is enabled */
|
/* Check if the boot debugger is enabled */
|
||||||
if (BlBdDebuggerEnabled())
|
if (BlBdDebuggerEnabled())
|
||||||
{
|
{
|
||||||
|
|
|
@ -1654,7 +1654,7 @@ ImgpCopyApplicationBootDevice (
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
ImgpInitializeBootApplicationParameters (
|
ImgpInitializeBootApplicationParameters (
|
||||||
_In_ PBL_IMAGE_PARAMETERS ImageParameters,
|
_In_ PBL_BUFFER_DESCRIPTOR ImageParameters,
|
||||||
_In_ PBL_APPLICATION_ENTRY AppEntry,
|
_In_ PBL_APPLICATION_ENTRY AppEntry,
|
||||||
_In_ PVOID ImageBase,
|
_In_ PVOID ImageBase,
|
||||||
_In_ ULONG ImageSize
|
_In_ ULONG ImageSize
|
||||||
|
@ -1662,7 +1662,7 @@ ImgpInitializeBootApplicationParameters (
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PIMAGE_NT_HEADERS NtHeaders;
|
PIMAGE_NT_HEADERS NtHeaders;
|
||||||
BL_IMAGE_PARAMETERS MemoryParameters;
|
BL_BUFFER_DESCRIPTOR MemoryParameters;
|
||||||
LIST_ENTRY MemoryList;
|
LIST_ENTRY MemoryList;
|
||||||
PBL_FIRMWARE_DESCRIPTOR FirmwareParameters;
|
PBL_FIRMWARE_DESCRIPTOR FirmwareParameters;
|
||||||
PBL_DEVICE_DESCRIPTOR BootDevice;
|
PBL_DEVICE_DESCRIPTOR BootDevice;
|
||||||
|
@ -1841,7 +1841,7 @@ ImgArchEfiStartBootApplication (
|
||||||
PVOID BootData;
|
PVOID BootData;
|
||||||
PIMAGE_NT_HEADERS NtHeaders;
|
PIMAGE_NT_HEADERS NtHeaders;
|
||||||
PVOID NewStack, NewGdt, NewIdt;
|
PVOID NewStack, NewGdt, NewIdt;
|
||||||
BL_IMAGE_PARAMETERS Parameters;
|
BL_BUFFER_DESCRIPTOR Parameters;
|
||||||
|
|
||||||
/* Read the current IDT and GDT */
|
/* Read the current IDT and GDT */
|
||||||
_sgdt(&Gdt.Limit);
|
_sgdt(&Gdt.Limit);
|
||||||
|
|
|
@ -1221,7 +1221,7 @@ MmPapFreePages (
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
BlMmGetMemoryMap (
|
BlMmGetMemoryMap (
|
||||||
_In_ PLIST_ENTRY MemoryMap,
|
_In_ PLIST_ENTRY MemoryMap,
|
||||||
_In_ PBL_IMAGE_PARAMETERS MemoryParameters,
|
_In_ PBL_BUFFER_DESCRIPTOR MemoryParameters,
|
||||||
_In_ ULONG WhichTypes,
|
_In_ ULONG WhichTypes,
|
||||||
_In_ ULONG Flags
|
_In_ ULONG Flags
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue