diff --git a/xtldr2/includes/bootman.h b/xtldr2/includes/bootman.h deleted file mode 100644 index 0002412..0000000 --- a/xtldr2/includes/bootman.h +++ /dev/null @@ -1,402 +0,0 @@ -/** - * PROJECT: ExectOS - * COPYRIGHT: See COPYING.md in the top level directory - * FILE: xtldr/includes/bootman.h - * DESCRIPTION: XTLDR Boot Loader related structures and routines forward references - * DEVELOPERS: Rafal Kupiec - */ - -#ifndef __XTLDR_BOOTMAN_H -#define __XTLDR_BOOTMAN_H - -#include - - -/* XTLDR routine callbacks */ -typedef VOID (BMPRINTCHAR)(IN USHORT Character); - -/* XTLDR routines forward references */ -XTCDECL -VOID -BlClearConsoleLine(IN ULONGLONG LineNo); - -XTCDECL -VOID -BlClearConsoleScreen(); - -XTCDECL -EFI_STATUS -BlCloseVolume(IN PEFI_HANDLE VolumeHandle); - -XTCDECL -VOID -BlConsolePrint(IN PUINT16 Format, - IN ...); - -XTCDECL -VOID -BlConsoleWrite(IN PUSHORT String); - -XTCDECL -VOID -BlDebugPrint(IN PUINT16 Format, - IN ...); - -XTCDECL -VOID -BlDisableConsoleCursor(); - -XTCDECL -VOID -BlDisplayBootMenu(); - -XTCDECL -VOID -BlDisplayErrorDialog(IN PWCHAR Caption, - IN PWCHAR Message); - -XTCDECL -VOID -BlDisplayInfoDialog(IN PWCHAR Caption, - IN PWCHAR Message); - -XTCDECL -VOID -BlDisplayInputDialog(IN PWCHAR Caption, - IN PWCHAR Message, - IN OUT PWCHAR *InputFieldText); - -XTCDECL -XTBL_DIALOG_HANDLE -BlDisplayProgressDialog(IN PWCHAR Caption, - IN PWCHAR Message, - IN UCHAR Percentage); - -XTCDECL -VOID -BlEnableConsoleCursor(); - -XTCDECL -EFI_STATUS -BlEnumerateBlockDevices(); - -XTCDECL -EFI_STATUS -BlExitBootServices(IN UINT_PTR MapKey); - -XTCDECL -EFI_STATUS -BlFindBootProtocol(IN PWCHAR SystemType, - OUT PEFI_GUID BootProtocolGuid); - -XTCDECL -EFI_STATUS -BlFindVolumeDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL FsHandle, - IN CONST PWCHAR FileSystemPath, - OUT PEFI_DEVICE_PATH_PROTOCOL* DevicePath); - -XTCDECL -PWCHAR -BlGetConfigValue(IN CONST PWCHAR ConfigName); - -XTCDECL -INT_PTR -BlGetSecureBootStatus(); - -XTCDECL -EFI_STATUS -BlGetVolumeDevicePath(IN PWCHAR SystemPath, - OUT PEFI_DEVICE_PATH_PROTOCOL *DevicePath, - OUT PWCHAR *ArcName, - OUT PWCHAR *Path); - -XTCDECL -VOID -BlInitializeBootLoader(); - -XTCDECL -VOID -BlInitializeBootMenuList(OUT PXTBL_BOOTMENU_ITEM MenuEntries, - OUT PULONG EntriesCount, - OUT PULONG DefaultId); - -XTCDECL -EFI_STATUS -BlInvokeBootProtocol(IN PLIST_ENTRY OptionsList); - -XTCDECL -EFI_STATUS -BlLoadModule(IN PWCHAR ModuleName); - -XTCDECL -EFI_STATUS -BlLoadModules(IN PWCHAR ModulesList); - -XTCDECL -EFI_STATUS -BlMemoryAllocatePages(IN UINT64 Pages, - OUT PEFI_PHYSICAL_ADDRESS Memory); - -XTCDECL -EFI_STATUS -BlMemoryAllocatePool(IN UINT_PTR Size, - OUT PVOID *Memory); - -XTCDECL -EFI_STATUS -BlMemoryFreePages(IN UINT64 Pages, - IN EFI_PHYSICAL_ADDRESS Memory); - -XTCDECL -EFI_STATUS -BlMemoryFreePool(IN PVOID Memory); - -XTCDECL -EFI_STATUS -BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, - OUT PEFI_HANDLE DiskHandle, - OUT PEFI_FILE_HANDLE *FsHandle); - -XTCDECL -EFI_STATUS -BlOpenProtocol(OUT PVOID *ProtocolHandler, - IN PEFI_GUID ProtocolGuid); - -XTCDECL -VOID -BlQueryConsoleMode(OUT PUINT_PTR ResX, - OUT PUINT_PTR ResY); - -XTCDECL -EFI_STATUS -BlReadFile(IN PEFI_FILE_HANDLE DirHandle, - IN CONST PWCHAR FileName, - OUT PVOID *FileData, - OUT PSIZE_T FileSize); - -XTCDECL -VOID -BlReadKeyStroke(OUT PEFI_INPUT_KEY Key); - -XTCDECL -VOID -BlRegisterBootMenu(PVOID BootMenuRoutine); - -XTCDECL -EFI_STATUS -BlRegisterBootProtocol(IN PWCHAR SystemType, - IN PEFI_GUID BootProtocolGuid); - -XTCDECL -EFI_STATUS -BlRegisterProtocol(IN PEFI_GUID Guid, - IN PVOID Interface); - -XTCDECL -VOID -BlResetConsoleInputBuffer(); - -XTCDECL -EFI_STATUS -BlSetConfigValue(IN CONST PWCHAR ConfigName, - IN CONST PWCHAR ConfigValue); - -XTCDECL -VOID -BlSetConsoleAttributes(IN ULONGLONG Attributes); - -XTCDECL -EFI_STATUS -BlSetConsoleMode(IN ULONGLONG Mode); - -XTCDECL -VOID -BlSetCursorPosition(IN ULONGLONG PosX, - IN ULONGLONG PosY); - -XTCDECL -VOID -BlSleepExecution(IN ULONG_PTR Milliseconds); - -XTCDECL -EFI_STATUS -BlStartXtLoader(IN EFI_HANDLE ImageHandle, - IN PEFI_SYSTEM_TABLE SystemTable); - -XTCDECL -VOID -BlUpdateProgressBar(IN PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Message, - IN UCHAR Percentage); - -XTCDECL -EFI_STATUS -BlWaitForEfiEvent(IN UINT_PTR NumberOfEvents, - IN PEFI_EVENT Event, - OUT PUINT_PTR Index); - -XTCDECL -EFI_STATUS -BlpActivateSerialIOController(); - -XTCDECL -VOID -BlpInitializeConsole(); - -XTCDECL -VOID -BlpConsolePrintChar(IN USHORT Character); - -XTCDECL -VOID -BlpDebugPutChar(IN USHORT Character); - -XTCDECL -VOID -BlpDetermineDialogBoxSize(IN OUT PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Message); - -XTCDECL -EFI_STATUS -BlpDiscoverEfiBlockDevices(OUT PLIST_ENTRY BlockDevices); - -XTCDECL -EFI_STATUS -BlpDissectVolumeArcPath(IN PWCHAR SystemPath, - OUT PWCHAR *ArcName, - OUT PWCHAR *Path, - OUT PUSHORT DriveType, - OUT PULONG DriveNumber, - OUT PULONG PartNumber); - -XTCDECL -VOID -BlpDrawBootMenu(OUT PXTBL_DIALOG_HANDLE Handle); - -XTCDECL -VOID -BlpDrawBootMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR MenuEntry, - IN UINT Position, - IN BOOLEAN Highlighted); - -XTCDECL -VOID -BlpDrawDialogBox(IN OUT PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Caption, - IN PWCHAR Message); - -XTCDECL -VOID -BlpDrawDialogButton(IN PXTBL_DIALOG_HANDLE Handle); - -XTCDECL -VOID -BlpDrawDialogInputField(IN PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR InputFieldText); - -XTCDECL -VOID -BlpDrawDialogMessage(IN PXTBL_DIALOG_HANDLE Handle, - IN PWCHAR Message); - -XTCDECL -VOID -BlpDrawDialogProgressBar(IN PXTBL_DIALOG_HANDLE Handle, - IN UCHAR Percentage); - -XTCDECL -PEFI_DEVICE_PATH_PROTOCOL -BlpDuplicateDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath); - -XTCDECL -EFI_STATUS -BlpFindLastBlockDeviceNode(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, - OUT PEFI_DEVICE_PATH_PROTOCOL *LastNode); - -XTCDECL -BOOLEAN -BlpFindParentBlockDevice(IN PLIST_ENTRY BlockDevices, - IN PEFI_BLOCK_DEVICE_DATA ChildNode, - OUT PEFI_BLOCK_DEVICE_DATA ParentNode); - -XTCDECL -EFI_STATUS -BlpInitializeDebugConsole(); - -XTCDECL -EFI_STATUS -BlpInitializeSerialPort(IN ULONG PortNumber, - IN ULONG PortAddress, - IN ULONG BaudRate); - -XTCDECL -EFI_STATUS -BlpLoadConfiguration(); - -XTCDECL -EFI_STATUS -BlpParseCommandLine(VOID); - -XTCDECL -EFI_STATUS -BlpParseConfigFile(IN CONST PCHAR RawConfig, - OUT PLIST_ENTRY Configuration); - -XTCDECL -EFI_STATUS -BlpReadConfigFile(IN CONST PWCHAR ConfigDirectory, - IN CONST PWCHAR ConfigFile, - OUT PCHAR *ConfigData); - -XTCDECL -EFI_STATUS -BlpRegisterXtLoaderProtocol(); - -XTCDECL -VOID -BlpStringFormat(IN BMPRINTCHAR PrintCharRoutine, - IN PUINT16 Format, - IN ...); - -XTCDECL -VOID -BlpStringPrint(IN IN BMPRINTCHAR PrintCharRoutine, - IN PUINT16 Format, - IN VA_LIST Arguments); - -XTCDECL -VOID -BlpStringPrintSigned32(IN BMPRINTCHAR PrintCharRoutine, - IN INT Number, - IN UINT Base); - -XTCDECL -VOID -BlpStringPrintSigned64(IN BMPRINTCHAR PrintCharRoutine, - IN INT_PTR Number, - IN UINT_PTR Base); - -XTCDECL -VOID -BlpStringPrintUnsigned32(IN BMPRINTCHAR PrintCharRoutine, - IN UINT Number, - IN UINT Base, - IN UINT Padding); - -XTCDECL -VOID -BlpStringPrintUnsigned64(IN BMPRINTCHAR PrintCharRoutine, - IN UINT_PTR Number, - IN UINT_PTR Base, - IN UINT_PTR Padding); - -XTCDECL -UINT64 -BlpStringReadPadding(IN PUINT16 *Format); - -XTCDECL -VOID -BlpUpdateConfiguration(IN PLIST_ENTRY NewConfig); - -#endif /* __XTLDR_BOOTMAN_H */ diff --git a/xtldr2/includes/xtldr.h b/xtldr2/includes/xtldr.h index 497b0b1..d385deb 100644 --- a/xtldr2/includes/xtldr.h +++ b/xtldr2/includes/xtldr.h @@ -13,6 +13,393 @@ #include #include -#include + + +/* XTLDR routine callbacks */ +typedef VOID (BLPRINTCHAR)(IN USHORT Character); + +/* XTLDR routines forward references */ +XTCDECL +VOID +BlClearConsoleLine(IN ULONGLONG LineNo); + +XTCDECL +VOID +BlClearConsoleScreen(); + +XTCDECL +EFI_STATUS +BlCloseVolume(IN PEFI_HANDLE VolumeHandle); + +XTCDECL +VOID +BlConsolePrint(IN PUINT16 Format, + IN ...); + +XTCDECL +VOID +BlConsoleWrite(IN PUSHORT String); + +XTCDECL +VOID +BlDebugPrint(IN PUINT16 Format, + IN ...); + +XTCDECL +VOID +BlDisableConsoleCursor(); + +XTCDECL +VOID +BlDisplayBootMenu(); + +XTCDECL +VOID +BlDisplayErrorDialog(IN PWCHAR Caption, + IN PWCHAR Message); + +XTCDECL +VOID +BlDisplayInfoDialog(IN PWCHAR Caption, + IN PWCHAR Message); + +XTCDECL +VOID +BlDisplayInputDialog(IN PWCHAR Caption, + IN PWCHAR Message, + IN OUT PWCHAR *InputFieldText); + +XTCDECL +XTBL_DIALOG_HANDLE +BlDisplayProgressDialog(IN PWCHAR Caption, + IN PWCHAR Message, + IN UCHAR Percentage); + +XTCDECL +VOID +BlEnableConsoleCursor(); + +XTCDECL +EFI_STATUS +BlEnumerateBlockDevices(); + +XTCDECL +EFI_STATUS +BlExitBootServices(IN UINT_PTR MapKey); + +XTCDECL +EFI_STATUS +BlFindBootProtocol(IN PWCHAR SystemType, + OUT PEFI_GUID BootProtocolGuid); + +XTCDECL +EFI_STATUS +BlFindVolumeDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL FsHandle, + IN CONST PWCHAR FileSystemPath, + OUT PEFI_DEVICE_PATH_PROTOCOL* DevicePath); + +XTCDECL +PWCHAR +BlGetConfigValue(IN CONST PWCHAR ConfigName); + +XTCDECL +INT_PTR +BlGetSecureBootStatus(); + +XTCDECL +EFI_STATUS +BlGetVolumeDevicePath(IN PWCHAR SystemPath, + OUT PEFI_DEVICE_PATH_PROTOCOL *DevicePath, + OUT PWCHAR *ArcName, + OUT PWCHAR *Path); + +XTCDECL +VOID +BlInitializeBootLoader(); + +XTCDECL +VOID +BlInitializeBootMenuList(OUT PXTBL_BOOTMENU_ITEM MenuEntries, + OUT PULONG EntriesCount, + OUT PULONG DefaultId); + +XTCDECL +EFI_STATUS +BlInvokeBootProtocol(IN PLIST_ENTRY OptionsList); + +XTCDECL +EFI_STATUS +BlLoadModule(IN PWCHAR ModuleName); + +XTCDECL +EFI_STATUS +BlLoadModules(IN PWCHAR ModulesList); + +XTCDECL +EFI_STATUS +BlMemoryAllocatePages(IN UINT64 Pages, + OUT PEFI_PHYSICAL_ADDRESS Memory); + +XTCDECL +EFI_STATUS +BlMemoryAllocatePool(IN UINT_PTR Size, + OUT PVOID *Memory); + +XTCDECL +EFI_STATUS +BlMemoryFreePages(IN UINT64 Pages, + IN EFI_PHYSICAL_ADDRESS Memory); + +XTCDECL +EFI_STATUS +BlMemoryFreePool(IN PVOID Memory); + +XTCDECL +EFI_STATUS +BlOpenVolume(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, + OUT PEFI_HANDLE DiskHandle, + OUT PEFI_FILE_HANDLE *FsHandle); + +XTCDECL +EFI_STATUS +BlOpenProtocol(OUT PVOID *ProtocolHandler, + IN PEFI_GUID ProtocolGuid); + +XTCDECL +VOID +BlQueryConsoleMode(OUT PUINT_PTR ResX, + OUT PUINT_PTR ResY); + +XTCDECL +EFI_STATUS +BlReadFile(IN PEFI_FILE_HANDLE DirHandle, + IN CONST PWCHAR FileName, + OUT PVOID *FileData, + OUT PSIZE_T FileSize); + +XTCDECL +VOID +BlReadKeyStroke(OUT PEFI_INPUT_KEY Key); + +XTCDECL +VOID +BlRegisterBootMenu(PVOID BootMenuRoutine); + +XTCDECL +EFI_STATUS +BlRegisterBootProtocol(IN PWCHAR SystemType, + IN PEFI_GUID BootProtocolGuid); + +XTCDECL +EFI_STATUS +BlRegisterProtocol(IN PEFI_GUID Guid, + IN PVOID Interface); + +XTCDECL +VOID +BlResetConsoleInputBuffer(); + +XTCDECL +EFI_STATUS +BlSetConfigValue(IN CONST PWCHAR ConfigName, + IN CONST PWCHAR ConfigValue); + +XTCDECL +VOID +BlSetConsoleAttributes(IN ULONGLONG Attributes); + +XTCDECL +EFI_STATUS +BlSetConsoleMode(IN ULONGLONG Mode); + +XTCDECL +VOID +BlSetCursorPosition(IN ULONGLONG PosX, + IN ULONGLONG PosY); + +XTCDECL +VOID +BlSleepExecution(IN ULONG_PTR Milliseconds); + +XTCDECL +EFI_STATUS +BlStartXtLoader(IN EFI_HANDLE ImageHandle, + IN PEFI_SYSTEM_TABLE SystemTable); + +XTCDECL +VOID +BlUpdateProgressBar(IN PXTBL_DIALOG_HANDLE Handle, + IN PWCHAR Message, + IN UCHAR Percentage); + +XTCDECL +EFI_STATUS +BlWaitForEfiEvent(IN UINT_PTR NumberOfEvents, + IN PEFI_EVENT Event, + OUT PUINT_PTR Index); + +XTCDECL +EFI_STATUS +BlpActivateSerialIOController(); + +XTCDECL +VOID +BlpInitializeConsole(); + +XTCDECL +VOID +BlpConsolePrintChar(IN USHORT Character); + +XTCDECL +VOID +BlpDebugPutChar(IN USHORT Character); + +XTCDECL +VOID +BlpDetermineDialogBoxSize(IN OUT PXTBL_DIALOG_HANDLE Handle, + IN PWCHAR Message); + +XTCDECL +EFI_STATUS +BlpDiscoverEfiBlockDevices(OUT PLIST_ENTRY BlockDevices); + +XTCDECL +EFI_STATUS +BlpDissectVolumeArcPath(IN PWCHAR SystemPath, + OUT PWCHAR *ArcName, + OUT PWCHAR *Path, + OUT PUSHORT DriveType, + OUT PULONG DriveNumber, + OUT PULONG PartNumber); + +XTCDECL +VOID +BlpDrawBootMenu(OUT PXTBL_DIALOG_HANDLE Handle); + +XTCDECL +VOID +BlpDrawBootMenuEntry(IN PXTBL_DIALOG_HANDLE Handle, + IN PWCHAR MenuEntry, + IN UINT Position, + IN BOOLEAN Highlighted); + +XTCDECL +VOID +BlpDrawDialogBox(IN OUT PXTBL_DIALOG_HANDLE Handle, + IN PWCHAR Caption, + IN PWCHAR Message); + +XTCDECL +VOID +BlpDrawDialogButton(IN PXTBL_DIALOG_HANDLE Handle); + +XTCDECL +VOID +BlpDrawDialogInputField(IN PXTBL_DIALOG_HANDLE Handle, + IN PWCHAR InputFieldText); + +XTCDECL +VOID +BlpDrawDialogMessage(IN PXTBL_DIALOG_HANDLE Handle, + IN PWCHAR Message); + +XTCDECL +VOID +BlpDrawDialogProgressBar(IN PXTBL_DIALOG_HANDLE Handle, + IN UCHAR Percentage); + +XTCDECL +PEFI_DEVICE_PATH_PROTOCOL +BlpDuplicateDevicePath(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath); + +XTCDECL +EFI_STATUS +BlpFindLastBlockDeviceNode(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, + OUT PEFI_DEVICE_PATH_PROTOCOL *LastNode); + +XTCDECL +BOOLEAN +BlpFindParentBlockDevice(IN PLIST_ENTRY BlockDevices, + IN PEFI_BLOCK_DEVICE_DATA ChildNode, + OUT PEFI_BLOCK_DEVICE_DATA ParentNode); + +XTCDECL +EFI_STATUS +BlpInitializeDebugConsole(); + +XTCDECL +EFI_STATUS +BlpInitializeSerialPort(IN ULONG PortNumber, + IN ULONG PortAddress, + IN ULONG BaudRate); + +XTCDECL +EFI_STATUS +BlpLoadConfiguration(); + +XTCDECL +EFI_STATUS +BlpParseCommandLine(VOID); + +XTCDECL +EFI_STATUS +BlpParseConfigFile(IN CONST PCHAR RawConfig, + OUT PLIST_ENTRY Configuration); + +XTCDECL +EFI_STATUS +BlpReadConfigFile(IN CONST PWCHAR ConfigDirectory, + IN CONST PWCHAR ConfigFile, + OUT PCHAR *ConfigData); + +XTCDECL +EFI_STATUS +BlpRegisterXtLoaderProtocol(); + +XTCDECL +VOID +BlpStringFormat(IN BLPRINTCHAR PrintCharRoutine, + IN PUINT16 Format, + IN ...); + +XTCDECL +VOID +BlpStringPrint(IN IN BLPRINTCHAR PrintCharRoutine, + IN PUINT16 Format, + IN VA_LIST Arguments); + +XTCDECL +VOID +BlpStringPrintSigned32(IN BLPRINTCHAR PrintCharRoutine, + IN INT Number, + IN UINT Base); + +XTCDECL +VOID +BlpStringPrintSigned64(IN BLPRINTCHAR PrintCharRoutine, + IN INT_PTR Number, + IN UINT_PTR Base); + +XTCDECL +VOID +BlpStringPrintUnsigned32(IN BLPRINTCHAR PrintCharRoutine, + IN UINT Number, + IN UINT Base, + IN UINT Padding); + +XTCDECL +VOID +BlpStringPrintUnsigned64(IN BLPRINTCHAR PrintCharRoutine, + IN UINT_PTR Number, + IN UINT_PTR Base, + IN UINT_PTR Padding); + +XTCDECL +UINT64 +BlpStringReadPadding(IN PUINT16 *Format); + +XTCDECL +VOID +BlpUpdateConfiguration(IN PLIST_ENTRY NewConfig); #endif /* __XTLDR_XTLDR_H */ diff --git a/xtldr2/string.c b/xtldr2/string.c index 991fbce..f082232 100644 --- a/xtldr2/string.c +++ b/xtldr2/string.c @@ -27,7 +27,7 @@ */ XTCDECL VOID -BlpStringPrint(IN IN BMPRINTCHAR PrintCharRoutine, +BlpStringPrint(IN IN BLPRINTCHAR PrintCharRoutine, IN PUINT16 Format, IN VA_LIST Arguments) { @@ -202,7 +202,7 @@ BlpStringPrint(IN IN BMPRINTCHAR PrintCharRoutine, */ XTCDECL VOID -BlpStringFormat(IN BMPRINTCHAR PrintCharRoutine, +BlpStringFormat(IN BLPRINTCHAR PrintCharRoutine, IN PUINT16 Format, IN ...) { @@ -236,7 +236,7 @@ BlpStringFormat(IN BMPRINTCHAR PrintCharRoutine, */ XTCDECL VOID -BlpStringPrintSigned32(IN BMPRINTCHAR PrintCharRoutine, +BlpStringPrintSigned32(IN BLPRINTCHAR PrintCharRoutine, IN INT Number, IN UINT Base) { @@ -269,7 +269,7 @@ BlpStringPrintSigned32(IN BMPRINTCHAR PrintCharRoutine, */ XTCDECL VOID -BlpStringPrintSigned64(IN BMPRINTCHAR PrintCharRoutine, +BlpStringPrintSigned64(IN BLPRINTCHAR PrintCharRoutine, IN INT_PTR Number, IN UINT_PTR Base) { @@ -305,7 +305,7 @@ BlpStringPrintSigned64(IN BMPRINTCHAR PrintCharRoutine, */ XTCDECL VOID -BlpStringPrintUnsigned32(IN BMPRINTCHAR PrintCharRoutine, +BlpStringPrintUnsigned32(IN BLPRINTCHAR PrintCharRoutine, IN UINT Number, IN UINT Base, IN UINT Padding) @@ -366,7 +366,7 @@ BlpStringPrintUnsigned32(IN BMPRINTCHAR PrintCharRoutine, */ XTCDECL VOID -BlpStringPrintUnsigned64(IN BMPRINTCHAR PrintCharRoutine, +BlpStringPrintUnsigned64(IN BLPRINTCHAR PrintCharRoutine, IN UINT_PTR Number, IN UINT_PTR Base, IN UINT_PTR Padding)