/** @file This driver parses the mSmbiosMiscDataTable structure and reports any generated data using SMBIOS protocol. Copyright (c) 2013-2015 Intel Corporation. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #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; }