这里我借鉴了其他的一些博客
https://blog.csdn.net/zhangliang19950813/article/details/105842364
https://www.lab-z.com/stu248/
因为我自己的电脑是没有“SM”开头的,所以需要自己去找开始的地址
/** @file
This sample application bases on HelloWorld PCD setting
to print "UEFI Hello World!" to the UEFI Console.
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#include "SmBios.h"
#pragma optimize("",off)
EFI_SMBIOS_PROTOCOL *gEfiSmBios;
EFI_STATUS
PrintGuid (
IN EFI_GUID *Guid
)
{
if (Guid == NULL) {
Print(L"Parameter error!\n");
return EFI_INVALID_PARAMETER;
}
Print (
L"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x ",
(unsigned) 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]
);
return EFI_SUCCESS;
}
UINTN
CompareGUID (
IN EFI_GUID *Guid1,
IN EFI_GUID *Guid2
)
{
if ((Guid1 == NULL)||(Guid2 == NULL)) {
Print(L"Parameter error!\n");
return 2;
}
if ((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->Da