101 ULONG FinalPathLength;
104 if (NewPathLength & 1)
111 if (NewPathLength >=
sizeof(
WCHAR))
114 if (NewPathString[(NewPathLength -
sizeof(
WCHAR)) /
sizeof(
WCHAR)] ==
122 if (NewPathLength >=
sizeof(
WCHAR))
133 if (NewPathLength >=
sizeof(
WCHAR))
136 if (NewPathString[(NewPathLength -
sizeof(
WCHAR)) /
sizeof(
WCHAR)] ==
147 if (NewPathLength != 0)
223 Option->DataOffset =
sizeof(*Option);
284 Option->Empty =
TRUE;
325 DevicePath = NextPath;
362 DeviceEntry->Size =
sizeof(*DeviceEntry);
376 DeviceEntry->Local.RamDisk.ImageBase.QuadPart = MemDevicePath->
StartingAddress;
377 DeviceEntry->Local.RamDisk.ImageSize.QuadPart = MemDevicePath->
EndingAddress -
379 DeviceEntry->Local.RamDisk.ImageOffset = 0;
403 DeviceEntry->Local.FloppyDisk.DriveNumber = AcpiPath->
UID;
415 DeviceEntry->Remote.Unknown = 256;
422 DeviceEntry->Local.FloppyDisk.DriveNumber = 0;
439 DeviceEntry->Partition.Disk.HardDisk.PartitionType =
MbrPartition;
440 DeviceEntry->Partition.Disk.HardDisk.Mbr.PartitionSignature =
442 DeviceEntry->Partition.Mbr.PartitionNumber = DiskPath->
PartitionNumber;
454 DeviceEntry->Partition.Disk.HardDisk.PartitionType =
GptPartition;
461 DeviceEntry->Flags |= 4
u;
468 DeviceEntry->Partition.Disk.HardDisk.PartitionType =
RawPartition;
469 DeviceEntry->Partition.Disk.HardDisk.Raw.DiskNumber = 0;
478 DeviceEntry->Local.FloppyDisk.DriveNumber = 0;
550 Option->DataOffset =
sizeof(*Option);
613 PWCHAR ObjectString, CommandLine;
615 ULONG HeaderSize, TotalOptionSize,
Size, CommandLineSize, RemainingSize;
620 BOOLEAN HaveBinaryOptions, HaveGuid;
626 *AppEntryDevice =
NULL;
631 if ((WindowsOptions !=
NULL) &&
642 HaveBinaryOptions =
TRUE;
647 CommandLine = LoadOptions;
648 CommandLineSize = LoadOptionsSize;
651 HaveBinaryOptions =
FALSE;
655 CommandLineSize /=
sizeof(
WCHAR);
656 if (CommandLineSize != 0)
659 if (wcsnlen(CommandLine, CommandLineSize) == CommandLineSize)
682 ObjectString =
wcsstr(CommandLine,
L"BCDOBJECT=");
683 if (ObjectString !=
NULL)
690 Entry->Guid = ObjectGuid;
724 RemainingSize -= TotalOptionSize;
730 if ((*AppEntryDevice)->DeviceType ==
UdpDevice)
751 Entry->BcdData.NextEntryOffset = TotalOptionSize;
755 TotalOptionSize +=
Size;
758 PreviousOption = Option;
761 RemainingSize -=
Size;
767 if ((HaveBinaryOptions) && !(HaveGuid))
793 TotalOptionSize +=
Size;
796 PreviousOption = Option;
799 RemainingSize -=
Size;
819 TotalOptionSize +=
Size;
822 PreviousOption = Option;
825 RemainingSize -=
Size;
872 ULONG FirmwareOffset, ConsumedSize;
891 BootServices = SystemTable->BootServices;
894 (
VOID**)&LoadedImage);
907 (
VOID**)&DevicePath);
941 LoadedImage->FilePath,
942 LoadedImage->LoadOptions,
943 LoadedImage->LoadOptionsSize,
952 if (AppDevice !=
NULL)
1020 if (BootParameters !=
NULL)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
#define BL_APPLICATION_FLAG_CONVERTED_FROM_EFI
NTSTATUS NTAPI BmMain(_In_ PBOOT_APPLICATION_PARAMETER_BLOCK BootParameters)
NTSTATUS EfiInitpAppendPathString(_In_ PWCHAR PathString, _In_ ULONG MaximumLength, _In_ PWCHAR NewPathString, _In_ ULONG NewPathLength, _Out_ PULONG ResultLength)
UCHAR Path[ANYSIZE_ARRAY]
#define EISA_PNP_ID(_PNPId)
#define STATUS_INVALID_PARAMETER
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
EFI_STATUS EFIAPI EfiEntry(_In_ EFI_HANDLE ImageHandle, _In_ EFI_SYSTEM_TABLE *SystemTable)
#define HARDWARE_DEVICE_PATH
struct _BOOT_APPLICATION_PARAMETER_BLOCK_SCRATCH BOOT_APPLICATION_PARAMETER_BLOCK_SCRATCH
struct _BL_MEMORY_DESCRIPTOR BL_MEMORY_DESCRIPTOR
#define BOOT_APPLICATION_SIGNATURE_2
IN PVOID IN PVOID IN USHORT IN USHORT Size
NTSTATUS EfiInitTranslateDevicePath(_In_ EFI_DEVICE_PATH_PROTOCOL *DevicePath, _In_ PBL_DEVICE_DESCRIPTOR DeviceEntry)
struct _BL_WINDOWS_LOAD_OPTIONS * PBL_WINDOWS_LOAD_OPTIONS
#define MESSAGING_DEVICE_PATH
#define BL_APP_ENTRY_SIGNATURE
#define STATUS_BUFFER_TOO_SMALL
static IN ULONG IN PWSTR OUT PCWSTR OUT PBOOLEAN OUT PATH_TYPE_AND_UNKNOWN * PathType
return STATUS_NOT_IMPLEMENTED
WCHAR LoadOptions[ANYSIZE_ARRAY]
#define STATUS_INTEGER_OVERFLOW
#define OBJ_NAME_PATH_SEPARATOR
FORCEINLINE UINTN DevicePathNodeLength(_In_ PVOID Node)
FORCEINLINE BOOLEAN IsDevicePathEndType(_In_ PVOID Node)
BL_MEMORY_DATA BootMemoryData
EFI_STATUS EfiGetEfiStatusCode(_In_ NTSTATUS Status)
EFI_PHYSICAL_ADDRESS StartingAddress
#define MEDIA_HARDDRIVE_DP
BL_DEVICE_DESCRIPTOR DeviceDescriptor
struct _BL_DEVICE_DESCRIPTOR BL_DEVICE_DESCRIPTOR
EFI_HANDLE_PROTOCOL HandleProtocol
struct _BL_WINDOWS_LOAD_OPTIONS BL_WINDOWS_LOAD_OPTIONS
const KSDEVICE_DESCRIPTOR DeviceDescriptor
#define BOOT_MEMORY_TRANSLATION_TYPE_PHYSICAL
_Must_inspect_result_ _In_ ULONG Flags
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
#define BL_FIRMWARE_DESCRIPTOR_VERSION
#define NT_SUCCESS(StatCode)
struct _BL_RETURN_ARGUMENTS BL_RETURN_ARGUMENTS
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
struct _BL_FIRMWARE_DESCRIPTOR BL_FIRMWARE_DESCRIPTOR
#define SIGNATURE_TYPE_MBR
struct _BL_BCD_OPTION BL_BCD_OPTION
#define STATUS_UNSUCCESSFUL
#define BOOT_APPLICATION_VERSION
EFI_DEVICE_PATH_PROTOCOL * EfiInitpGetDeviceNode(_In_ EFI_DEVICE_PATH_PROTOCOL *DevicePath)
#define MEDIA_DEVICE_PATH
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
EFI_PHYSICAL_ADDRESS EndingAddress
EFI_GUID EfiDevicePathProtocol
ULONG BlpApplicationFlags
PBOOT_APPLICATION_PARAMETER_BLOCK EfiInitCreateInputParametersEx(_In_ EFI_HANDLE ImageHandle, _In_ EFI_SYSTEM_TABLE *SystemTable)
PRTL_UNICODE_STRING_BUFFER Path
ULONG BlGetBootOptionSize(_In_ PBL_BCD_OPTION BcdOption)
EFI_GUID EfiLoadedImageProtocol
#define FIELD_OFFSET(t, f)
NTSTATUS EfiInitpConvertEfiFilePath(_In_ EFI_DEVICE_PATH_PROTOCOL *DevicePath, _In_ ULONG PathType, _In_ PBL_BCD_OPTION Option, _In_ ULONG MaximumLength)
#define BL_MEMORY_DATA_VERSION
BOOT_APPLICATION_PARAMETER_BLOCK
EFI_SYSTEM_TABLE * SystemTable
NTSTATUS EfiInitpConvertEfiDevicePath(_In_ EFI_DEVICE_PATH_PROTOCOL *DevicePath, _In_ ULONG DeviceType, _In_ PBL_BCD_OPTION Option, _In_ ULONG MaximumLength)
struct _BCD_DEVICE_OPTION * PBCD_DEVICE_OPTION
#define EFI_IMAGE_MACHINE_IA32
#define BOOT_APPLICATION_SIGNATURE_1
VOID EfiInitpCreateApplicationEntry(__in EFI_SYSTEM_TABLE *SystemTable, __in PBL_APPLICATION_ENTRY Entry, __in ULONG MaximumLength, __in EFI_DEVICE_PATH *DevicePath, __in EFI_DEVICE_PATH *FilePath, __in PWCHAR LoadOptions, __in ULONG LoadOptionsSize, __in ULONG Flags, __out PULONG ResultLength, __out PBL_DEVICE_DESCRIPTOR *AppEntryDevice)
BL_MEMORY_DESCRIPTOR MemEntry
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
BOOT_APPLICATION_PARAMETER_BLOCK_SCRATCH EfiInitScratch
#define ALIGN_UP_BY(size, align)
#define SIGNATURE_TYPE_GUID
#define RtlCopyMemory(Destination, Source, Length)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
#define BL_RETURN_ARGUMENTS_VERSION
#define BL_APPLICATION_ENTRY_FLAG_NO_GUID
NTSTATUS AhCreateLoadOptionsList(_In_ PWCHAR CommandLine, _In_ PBL_BCD_OPTION BootOptions, _In_ ULONG MaximumLength, _Out_ PULONG OptionSize, _In_ PBL_BCD_OPTION *PreviousOption, _In_ PULONG PreviousOptionSize)
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
base of all file and directory entries
FORCEINLINE EFI_DEVICE_PATH_PROTOCOL * NextDevicePathNode(_In_ PVOID Node)
#define MEDIA_FILEPATH_DP