Syncboot/efi/lib/guid.c
Curle 4300dc655c Add EFI documentation, libraries and includes.
The lib/inc folders are from the GNU-EFI project.
The documentation is from the uefi.org site.

Yes, I know there are duplicate includes. I have a plan for them.
2019-07-17 15:11:52 +01:00

180 lines
5.0 KiB
C

/*++
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[] = {
{ &NullGuid, L"G0" },
{ &gEfiGlobalVariableGuid, L"EfiVar" },
{ &VariableStoreProtocol, L"VarStore" },
{ &gEfiDevicePathProtocolGuid, L"DevPath" },
{ &gEfiLoadedImageProtocolGuid, L"LdImg" },
{ &gEfiSimpleTextInProtocolGuid, L"TxtIn" },
{ &gEfiSimpleTextOutProtocolGuid, L"TxtOut" },
{ &gEfiBlockIoProtocolGuid, L"BlkIo" },
{ &gEfiBlockIo2ProtocolGuid, L"BlkIo2" },
{ &gEfiDiskIoProtocolGuid, L"DskIo" },
{ &gEfiDiskIo2ProtocolGuid, L"DskIo2" },
{ &gEfiSimpleFileSystemProtocolGuid, L"Fs" },
{ &gEfiLoadFileProtocolGuid, L"LdFile" },
{ &gEfiDeviceIoProtocolGuid, L"DevIo" },
{ &gEfiComponentNameProtocolGuid, L"CName" },
{ &gEfiComponentName2ProtocolGuid, L"CName2" },
{ &gEfiFileInfoGuid, L"FileInfo" },
{ &gEfiFileSystemInfoGuid, L"FsInfo" },
{ &gEfiFileSystemVolumeLabelInfoIdGuid, L"FsVolInfo" },
{ &gEfiUnicodeCollationProtocolGuid, L"Unicode" },
{ &LegacyBootProtocol, L"LegacyBoot" },
{ &gEfiSerialIoProtocolGuid, L"SerIo" },
{ &VgaClassProtocol, L"VgaClass"},
{ &gEfiSimpleNetworkProtocolGuid, L"Net" },
{ &gEfiNetworkInterfaceIdentifierProtocolGuid, L"Nii" },
{ &gEfiPxeBaseCodeProtocolGuid, L"Pxe" },
{ &gEfiPxeBaseCodeCallbackProtocolGuid, L"PxeCb" },
{ &TextOutSpliterProtocol, L"TxtOutSplit" },
{ &ErrorOutSpliterProtocol, L"ErrOutSplit" },
{ &TextInSpliterProtocol, L"TxtInSplit" },
{ &gEfiPcAnsiGuid, L"PcAnsi" },
{ &gEfiVT100Guid, L"Vt100" },
{ &gEfiVT100PlusGuid, L"Vt100Plus" },
{ &gEfiVTUTF8Guid, L"VtUtf8" },
{ &UnknownDevice, L"UnknownDev" },
{ &EfiPartTypeSystemPartitionGuid, L"ESP" },
{ &EfiPartTypeLegacyMbrGuid, L"GPT MBR" },
{ &ShellInterfaceProtocol, L"ShellInt" },
{ &SEnvId, L"SEnv" },
{ &SProtId, L"ShellProtId" },
{ &SMapId, L"ShellDevPathMap" },
{ &SAliasId, L"ShellAlias" },
{ NULL, L"" }
};
//
//
//
LIST_ENTRY GuidList;
VOID
InitializeGuid (
VOID
)
{
}
INTN
CompareGuid(
IN EFI_GUID *Guid1,
IN EFI_GUID *Guid2
)
/*++
Routine Description:
Compares to GUIDs
Arguments:
Guid1 - guid to compare
Guid2 - guid to compare
Returns:
= 0 if Guid1 == Guid2
--*/
{
return RtCompareGuid (Guid1, Guid2);
}
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) == 0) {
SPrint (Buffer, 0, KnownGuids[Index].GuidName);
return ;
}
}
//
// Else dump it
//
SPrint (Buffer, 0, L"%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]
);
}