[ROSLOAD]: Continue work on target preparation OslPrepareTarget 2/104.

[ROSLOAD]: Stubplement OslpCheckForcedFailure, OslpGetSetBootStatusData, OslSetBootStatusData, OslGetBootStatusData.
[ROSLOAD]: Stub OslpInitializeBootStatusDataLog, OslpReadWriteBootStatusData.
[BOOTLIB]: Fix BlAppendBootOptionString to accept an actual BCD ID instead of hardcoding LibraryPath.
[BOOTLIB]: Fix BlAppendBootOptionBoolean to accept an actual BOOLEAN value instead of hardcoding TRUE.
[BOOTLIB]: Implement BlDeviceIsVirtualPartitionDevice.
[BOOTLIB]: Add missing BcdOSLoaderInteger_ForceFailure BCD value. Add BCDE_OSLOADER_TYPE_BOOT_STATUS_POLICY based on BcdEdit.exe and Geoff Chappel site.
This commit is contained in:
Alex Ionescu 2018-02-04 16:01:38 -08:00
parent f0c7db730c
commit 9ec85c29e3
7 changed files with 632 additions and 21 deletions

View file

@ -608,6 +608,39 @@ BlockIoGetInformation (
return STATUS_SUCCESS;
}
BOOLEAN
BlDeviceIsVirtualPartitionDevice (
_In_ PBL_DEVICE_DESCRIPTOR InputDevice,
_Outptr_ PBL_DEVICE_DESCRIPTOR* VirtualDevice
)
{
BOOLEAN IsVirtual;
PBL_LOCAL_DEVICE ParentDisk;
/* Assume it isn't */
IsVirtual = FALSE;
/* Check if this is a partition device */
if ((InputDevice->DeviceType == LegacyPartitionDevice) ||
(InputDevice->DeviceType == PartitionDevice))
{
/* Check if the parent disk is a VHD */
ParentDisk = &InputDevice->Partition.Disk;
if (ParentDisk->Type == VirtualDiskDevice)
{
/* This is a virtual partition device -- does the caller want it? */
IsVirtual = TRUE;
if (VirtualDevice)
{
*VirtualDevice = (PBL_DEVICE_DESCRIPTOR)(&ParentDisk->VirtualHardDisk + 1);
}
}
}
/* Return */
return IsVirtual;
}
NTSTATUS
BlDeviceSetInformation (
_In_ ULONG DeviceId,