1 /*++ 2 3 Copyright (c) 1998 Intel Corporation 4 5 Module Name: 6 7 misc.c 8 9 Abstract: 10 11 Misc EFI support functions 12 13 14 15 Revision History 16 17 --*/ 18 19 #include "lib.h" 20 21 22 // 23 // Additional Known guids 24 // 25 26 #define SHELL_INTERFACE_PROTOCOL \ 27 { 0x47c7b223, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 28 29 #define ENVIRONMENT_VARIABLE_ID \ 30 { 0x47c7b224, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 31 32 #define DEVICE_PATH_MAPPING_ID \ 33 { 0x47c7b225, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 34 35 #define PROTOCOL_ID_ID \ 36 { 0x47c7b226, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 37 38 #define ALIAS_ID \ 39 { 0x47c7b227, 0xc42a, 0x11d2, {0x8e, 0x57, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 40 41 static EFI_GUID ShellInterfaceProtocol = SHELL_INTERFACE_PROTOCOL; 42 static EFI_GUID SEnvId = ENVIRONMENT_VARIABLE_ID; 43 static EFI_GUID SMapId = DEVICE_PATH_MAPPING_ID; 44 static EFI_GUID SProtId = PROTOCOL_ID_ID; 45 static EFI_GUID SAliasId = ALIAS_ID; 46 47 static struct { 48 EFI_GUID *Guid; 49 WCHAR *GuidName; 50 } KnownGuids[] = { 51 { &NullGuid, L"G0"}, 52 { &EfiGlobalVariable, L"Efi"}, 53 54 { &VariableStoreProtocol, L"varstore"}, 55 { &DevicePathProtocol, L"dpath"}, 56 { &LoadedImageProtocol, L"image"}, 57 { &TextInProtocol, L"txtin"}, 58 { &TextOutProtocol, L"txtout"}, 59 { &BlockIoProtocol, L"blkio"}, 60 { &DiskIoProtocol, L"diskio"}, 61 { &FileSystemProtocol, L"fs"}, 62 { &LoadFileProtocol, L"load"}, 63 { &DeviceIoProtocol, L"DevIo"}, 64 65 { &GenericFileInfo, L"GenFileInfo"}, 66 { &FileSystemInfo, L"FileSysInfo"}, 67 68 { &UnicodeCollationProtocol, L"unicode"}, 69 { &LegacyBootProtocol, L"LegacyBoot"}, 70 { &SerialIoProtocol, L"serialio"}, 71 { &VgaClassProtocol, L"vgaclass"}, 72 { &SimpleNetworkProtocol, L"net"}, 73 { &NetworkInterfaceIdentifierProtocol, L"nii"}, 74 { &PxeBaseCodeProtocol, L"pxebc"}, 75 { &PxeCallbackProtocol, L"pxecb"}, 76 77 { &VariableStoreProtocol, L"varstore"}, 78 { &LegacyBootProtocol, L"LegacyBoot"}, 79 { &VgaClassProtocol, L"VgaClass"}, 80 { &TextOutSpliterProtocol, L"TxtOutSplit"}, 81 { &ErrorOutSpliterProtocol, L"ErrOutSplit"}, 82 { &TextInSpliterProtocol, L"TxtInSplit"}, 83 { &PcAnsiProtocol, L"PcAnsi"}, 84 { &Vt100Protocol, L"Vt100"}, 85 { &UnknownDevice, L"Unknown Device"}, 86 87 { &EfiPartTypeSystemPartitionGuid, L"ESP"}, 88 { &EfiPartTypeLegacyMbrGuid, L"GPT MBR"}, 89 90 { &ShellInterfaceProtocol, L"ShellInt"}, 91 { &SEnvId, L"SEnv"}, 92 { &SProtId, L"ShellProtId"}, 93 { &SMapId, L"ShellDevPathMap"}, 94 { &SAliasId, L"ShellAlias"}, 95 96 { NULL } 97 }; 98 99 // 100 // 101 // 102 103 LIST_ENTRY GuidList; 104 105 106 VOID 107 InitializeGuid ( 108 VOID 109 ) 110 { 111 } 112 113 INTN 114 CompareGuid( 115 IN EFI_GUID *Guid1, 116 IN EFI_GUID *Guid2 117 ) 118 /*++ 119 120 Routine Description: 121 122 Compares to GUIDs 123 124 Arguments: 125 126 Guid1 - guid to compare 127 Guid2 - guid to compare 128 129 Returns: 130 = 0 if Guid1 == Guid2 131 132 --*/ 133 { 134 return RtCompareGuid (Guid1, Guid2); 135 } 136 137 138 VOID 139 GuidToString ( 140 OUT CHAR16 *Buffer, 141 IN EFI_GUID *Guid 142 ) 143 { 144 145 UINTN Index; 146 147 // 148 // Else, (for now) use additional internal function for mapping guids 149 // 150 151 for (Index=0; KnownGuids[Index].Guid; Index++) { 152 if (CompareGuid(Guid, KnownGuids[Index].Guid) == 0) { 153 SPrint (Buffer, 0, KnownGuids[Index].GuidName); 154 return ; 155 } 156 } 157 158 // 159 // Else dump it 160 // 161 162 SPrint (Buffer, 0, L"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", 163 Guid->Data1, 164 Guid->Data2, 165 Guid->Data3, 166 Guid->Data4[0], 167 Guid->Data4[1], 168 Guid->Data4[2], 169 Guid->Data4[3], 170 Guid->Data4[4], 171 Guid->Data4[5], 172 Guid->Data4[6], 173 Guid->Data4[7] 174 ); 175 } 176