_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 ***********************************************************/
typedef struct _BL_LIBRARY_PARAMETERS
typedef struct _BL_LOCAL_DEVICE
{
- ULONG Type;
+ BL_LOCAL_DEVICE_TYPE Type;
union
{
struct
BL_HARDDISK_DEVICE HardDisk;
+ BL_HARDDISK_DEVICE VirtualHardDisk;
+
struct
{
PHYSICAL_ADDRESS ImageBase;
ULONG ImageSize;
} BL_IMAGE_APPLICATION_ENTRY, *PBL_IMAGE_APPLICATION_ENTRY;
-typedef struct _BL_IMAGE_PARAMETERS
+typedef struct _BL_BUFFER_DESCRIPTOR
{
PVOID Buffer;
ULONG ActualSize;
ULONG BufferSize;
-} BL_IMAGE_PARAMETERS, *PBL_IMAGE_PARAMETERS;
+} BL_BUFFER_DESCRIPTOR, *PBL_BUFFER_DESCRIPTOR;
typedef struct _BL_DEFERRED_FONT_FILE
{
List->Type = 0;
}
+FORCEINLINE
+PVOID
+PhysicalAddressToPtr (
+ _In_ PHYSICAL_ADDRESS PhysicalAddress)
+{
+ return (PVOID)(ULONG_PTR)PhysicalAddress.QuadPart;
+}
+
/* INITIALIZATION ROUTINES ***************************************************/
NTSTATUS
NTSTATUS
BlAppendBootOptionBoolean (
_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry,
- _In_ ULONG OptionId
+ _In_ ULONG OptionId,
+ _In_ BOOLEAN Value
);
NTSTATUS
NTSTATUS
BlAppendBootOptionString (
_In_ PBL_LOADED_APPLICATION_ENTRY AppEntry,
+ _In_ ULONG OptionId,
_In_ PWCHAR OptionString
);
NTSTATUS
BlMmGetMemoryMap (
_In_ PLIST_ENTRY MemoryMap,
- _In_ PBL_IMAGE_PARAMETERS MemoryParameters,
+ _In_ PBL_BUFFER_DESCRIPTOR MemoryParameters,
_In_ ULONG WhichTypes,
_In_ ULONG Flags
);
PVOID
BlMmAllocateHeap (
- _In_ ULONG Size
+ _In_ SIZE_T Size
);
NTSTATUS
_In_ ULONG DeviceId
);
+BOOLEAN
+BlDeviceIsVirtualPartitionDevice (
+ _In_ PBL_DEVICE_DESCRIPTOR InputDevice,
+ _Outptr_ PBL_DEVICE_DESCRIPTOR* VirtualDevice
+ );
+
NTSTATUS
BlpDeviceOpen (
_In_ PBL_DEVICE_DESCRIPTOR Device,
extern PBL_MM_FLUSH_TLB BlMmFlushTlb;
extern PBL_MM_MOVE_VIRTUAL_ADDRESS_RANGE BlMmMoveVirtualAddressRange;
extern PBL_MM_ZERO_VIRTUAL_ADDRESS_RANGE BlMmZeroVirtualAddressRange;
+extern PBL_STATUS_ERROR_HANDLER BlpStatusErrorHandler;
#endif