/** @file | |
This driver parses the mSmbiosMiscDataTable structure and reports | |
any generated data using SMBIOS protocol. | |
Copyright (c) 2013-2015 Intel Corporation. | |
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 "CommonHeader.h" | |
#include "SmbiosMisc.h" | |
extern UINT8 SmbiosMiscStrings[]; | |
EFI_HANDLE mImageHandle; | |
EFI_HII_HANDLE mHiiHandle; | |
/** | |
Standard EFI driver point. This driver parses the mSmbiosMiscDataTable | |
structure and reports any generated data using SMBIOS protocol. | |
@param ImageHandle Handle for the image of this driver | |
@param SystemTable Pointer to the EFI System Table | |
@retval EFI_SUCCESS The data was successfully stored. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
SmbiosMiscEntryPoint( | |
IN EFI_HANDLE ImageHandle, | |
IN EFI_SYSTEM_TABLE *SystemTable | |
) | |
{ | |
UINTN Index; | |
EFI_STATUS EfiStatus; | |
EFI_SMBIOS_PROTOCOL *Smbios; | |
mImageHandle = ImageHandle; | |
EfiStatus = gBS->LocateProtocol(&gEfiSmbiosProtocolGuid, NULL, (VOID**)&Smbios); | |
if (EFI_ERROR(EfiStatus)) { | |
DEBUG((EFI_D_ERROR, "Could not locate SMBIOS protocol. %r\n", EfiStatus)); | |
return EfiStatus; | |
} | |
mHiiHandle = HiiAddPackages ( | |
&gEfiCallerIdGuid, | |
mImageHandle, | |
SmbiosMiscStrings, | |
NULL | |
); | |
ASSERT (mHiiHandle != NULL); | |
for (Index = 0; Index < mSmbiosMiscDataTableEntries; ++Index) { | |
// | |
// If the entry have a function pointer, just log the data. | |
// | |
if (mSmbiosMiscDataTable[Index].Function != NULL) { | |
EfiStatus = (*mSmbiosMiscDataTable[Index].Function)( | |
mSmbiosMiscDataTable[Index].RecordData, | |
Smbios | |
); | |
if (EFI_ERROR(EfiStatus)) { | |
DEBUG((EFI_D_ERROR, "Misc smbios store error. Index=%d, ReturnStatus=%r\n", Index, EfiStatus)); | |
return EfiStatus; | |
} | |
} | |
} | |
return EfiStatus; | |
} |