+
+EFI_GUID StringAsGuid(CHAR16 * InString) {
+ EFI_GUID Guid = NULL_GUID_VALUE;
+
+ if (!IsGuid(InString)) {
+ return Guid;
+ }
+
+ Guid.Data1 = (UINT32) StrToHex(InString, 0, 8);
+ Guid.Data2 = (UINT16) StrToHex(InString, 9, 4);
+ Guid.Data3 = (UINT16) StrToHex(InString, 14, 4);
+ Guid.Data4[0] = (UINT8) StrToHex(InString, 19, 2);
+ Guid.Data4[1] = (UINT8) StrToHex(InString, 21, 2);
+ Guid.Data4[2] = (UINT8) StrToHex(InString, 23, 2);
+ Guid.Data4[3] = (UINT8) StrToHex(InString, 26, 2);
+ Guid.Data4[4] = (UINT8) StrToHex(InString, 28, 2);
+ Guid.Data4[5] = (UINT8) StrToHex(InString, 30, 2);
+ Guid.Data4[6] = (UINT8) StrToHex(InString, 32, 2);
+ Guid.Data4[7] = (UINT8) StrToHex(InString, 34, 2);
+
+ return Guid;
+} // EFI_GUID StringAsGuid()
+
+// Returns TRUE if the two GUIDs are equal, FALSE otherwise
+BOOLEAN GuidsAreEqual(EFI_GUID *Guid1, EFI_GUID *Guid2) {
+ return ((Guid1->Data1 == Guid2->Data1) && (Guid1->Data2 == Guid2->Data2) && (Guid1->Data3 == Guid2->Data3) &&
+ (Guid1->Data4[0] == Guid2->Data4[0]) && (Guid1->Data4[1] == Guid2->Data4[1]) &&
+ (Guid1->Data4[2] == Guid2->Data4[2]) && (Guid1->Data4[3] == Guid2->Data4[3]) &&
+ (Guid1->Data4[4] == Guid2->Data4[4]) && (Guid1->Data4[5] == Guid2->Data4[5]) &&
+ (Guid1->Data4[6] == Guid2->Data4[6]) && (Guid1->Data4[7] == Guid2->Data4[7]));
+} // BOOLEAN CompareGuids()
\ No newline at end of file