/*++ Copyright (c) 1998 Intel Corporation Module Name: misc.c Abstract: Misc EFI support functions Revision History --*/ #include "lib.h" // // Additional Known guids // #define SHELL_INTERFACE_PROTOCOL \ { 0x47c7b223, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } #define ENVIRONMENT_VARIABLE_ID \ { 0x47c7b224, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } #define DEVICE_PATH_MAPPING_ID \ { 0x47c7b225, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } #define PROTOCOL_ID_ID \ { 0x47c7b226, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } #define ALIAS_ID \ { 0x47c7b227, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } static EFI_GUID ShellInterfaceProtocol = SHELL_INTERFACE_PROTOCOL; static EFI_GUID SEnvId = ENVIRONMENT_VARIABLE_ID; static EFI_GUID SMapId = DEVICE_PATH_MAPPING_ID; static EFI_GUID SProtId = PROTOCOL_ID_ID; static EFI_GUID SAliasId = ALIAS_ID; static struct { EFI_GUID *Guid; WCHAR *GuidName; } KnownGuids[] = { { &gZeroGuid, u"NullGuid" }, { &gEfiGlobalVariableGuid, u"EfiVar" }, { &VariableStoreProtocol, u"VarStore" }, { &gEfiDevicePathProtocolGuid, u"DevPath" }, { &gEfiLoadedImageProtocolGuid, u"LdImg" }, { &gEfiSimpleTextInProtocolGuid, u"TxtIn" }, { &gEfiSimpleTextOutProtocolGuid, u"TxtOut" }, { &gEfiBlockIoProtocolGuid, u"BlkIo" }, { &gEfiBlockIo2ProtocolGuid, u"BlkIo2" }, { &gEfiDiskIoProtocolGuid, u"DskIo" }, { &gEfiDiskIo2ProtocolGuid, u"DskIo2" }, { &gEfiSimpleFileSystemProtocolGuid, u"Fs" }, { &gEfiLoadFileProtocolGuid, u"LdFile" }, { &gEfiDeviceIoProtocolGuid, u"DevIo" }, { &gEfiComponentNameProtocolGuid, u"CName" }, { &gEfiComponentName2ProtocolGuid, u"CName2" }, { &gEfiMpServicesProtocolGuid, u"Mp" }, { &gEfiFileInfoGuid, u"FileInfo" }, { &gEfiFileSystemInfoGuid, u"FsInfo" }, { &gEfiFileSystemVolumeLabelInfoIdGuid, u"FsVolInfo" }, { &gEfiUnicodeCollationProtocolGuid, u"Unicode" }, { &LegacyBootProtocol, u"LegacyBoot" }, { &gEfiSerialIoProtocolGuid, u"SerIo" }, { &VgaClassProtocol, u"VgaClass"}, { &gEfiSimpleNetworkProtocolGuid, u"Net" }, { &gEfiNetworkInterfaceIdentifierProtocolGuid, u"Nii" }, { &gEfiPxeBaseCodeProtocolGuid, u"Pxe" }, { &gEfiPxeBaseCodeCallbackProtocolGuid, u"PxeCb" }, { &TextOutSpliterProtocol, u"TxtOutSplit" }, { &ErrorOutSpliterProtocol, u"ErrOutSplit" }, { &TextInSpliterProtocol, u"TxtInSplit" }, { &gEfiPcAnsiGuid, u"PcAnsi" }, { &gEfiVT100Guid, u"Vt100" }, { &gEfiVT100PlusGuid, u"Vt100Plus" }, { &gEfiVTUTF8Guid, u"VtUtf8" }, { &UnknownDevice, u"UnknownDev" }, { &EfiPartTypeSystemPartitionGuid, u"ESP" }, { &EfiPartTypeLegacyMbrGuid, u"GPT MBR" }, { &ShellInterfaceProtocol, u"ShellInt" }, { &SEnvId, u"SEnv" }, { &SProtId, u"ShellProtId" }, { &SMapId, u"ShellDevPathMap" }, { &SAliasId, u"ShellAlias" }, { NULL, u"" } }; // // // LIST_ENTRY GuidList; VOID InitializeGuid ( VOID ) { } BOOLEAN EFIAPI CompareGuid_1 ( IN CONST EFI_GUID *Guid1, IN CONST EFI_GUID *Guid2 ) /*++ Routine Description: Compares to GUIDs Arguments: Guid1 - guid to compare Guid2 - guid to compare Returns: = 1 if Guid1 == Guid2 --*/ { return RtCompareGuid (Guid1, Guid2); } BOOLEAN EFIAPI IsZeroGuid ( IN CONST EFI_GUID *Guid1 ) { return RtIsZeroGuid(Guid1); } VOID GuidToString ( OUT CHAR16 *Buffer, IN EFI_GUID *Guid ) { UINTN Index; // // Else, (for now) use additional internal function for mapping guids // for (Index=0; KnownGuids[Index].Guid; Index++) { if (CompareGuid(Guid, KnownGuids[Index].Guid)) { UnicodeSPrint (Buffer, 0, KnownGuids[Index].GuidName); return ; } } // // Else dump it // UnicodeSPrint (Buffer, 0, u"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", Guid->Data1, Guid->Data2, Guid->Data3, Guid->Data4[0], Guid->Data4[1], Guid->Data4[2], Guid->Data4[3], Guid->Data4[4], Guid->Data4[5], Guid->Data4[6], Guid->Data4[7] ); }