123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- /** @file
- Provides library functions for common SMBIOS operations. Only available to DXE
- and UEFI module types.
- Copyright (c) 2012, Apple Inc. All rights reserved.
- Portitions Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef _SMBIOS_LIB_H__
- #define _SMBIOS_LIB_H__
- #include <IndustryStandard/SmBios.h>
- #include <Protocol/Smbios.h>
- ///
- /// Cache copy of the SMBIOS Protocol pointer
- ///
- extern EFI_SMBIOS_PROTOCOL *gSmbios;
- ///
- /// Template for SMBIOS table initialization.
- /// The SMBIOS_TABLE_STRING types in the formated area must match the
- /// StringArray sequene.
- ///
- typedef struct {
- //
- // formatted area of a given SMBIOS record
- //
- SMBIOS_STRUCTURE *Entry;
- //
- // NULL terminated array of ASCII strings to be added to the SMBIOS record.
- //
- CHAR8 **StringArray;
- } SMBIOS_TEMPLATE_ENTRY;
- /**
- Create an initial SMBIOS Table from an array of SMBIOS_TEMPLATE_ENTRY
- entries. SMBIOS_TEMPLATE_ENTRY.NULL indicates the end of the table.
- @param Template Array of SMBIOS_TEMPLATE_ENTRY entries.
- @retval EFI_SUCCESS New SMBIOS tables were created.
- @retval EFI_OUT_OF_RESOURCES New SMBIOS tables were not created.
- **/
- EFI_STATUS
- EFIAPI
- SmbiosLibInitializeFromTemplate (
- IN SMBIOS_TEMPLATE_ENTRY *Template
- );
- /**
- Create SMBIOS record.
- Converts a fixed SMBIOS structure and an array of pointers to strings into
- an SMBIOS record where the strings are cat'ed on the end of the fixed record
- and terminated via a double NULL and add to SMBIOS table.
- SMBIOS_TABLE_TYPE32 gSmbiosType12 = {
- { EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS, sizeof (SMBIOS_TABLE_TYPE12), 0 },
- 1 // StringCount
- };
- CHAR8 *gSmbiosType12Strings[] = {
- "Not Found",
- NULL
- };
- ...
- AddSmbiosEntryFromTemplate (
- (EFI_SMBIOS_TABLE_HEADER*)&gSmbiosType12,
- gSmbiosType12Strings
- );
- @param SmbiosEntry Fixed SMBIOS structure
- @param StringArray Array of strings to convert to an SMBIOS string pack.
- NULL is OK.
- @retval EFI_SUCCESS New SmbiosEntry was added to SMBIOS table.
- @retval EFI_OUT_OF_RESOURCES SmbiosEntry was not added.
- **/
- EFI_STATUS
- EFIAPI
- SmbiosLibCreateEntry (
- IN SMBIOS_STRUCTURE *SmbiosEntry,
- IN CHAR8 **StringArray
- );
- /**
- Update the string associated with an existing SMBIOS record.
- This function allows the update of specific SMBIOS strings. The number of valid strings for any
- SMBIOS record is defined by how many strings were present when Add() was called.
- @param[in] SmbiosHandle SMBIOS Handle of structure that will have its string updated.
- @param[in] StringNumber The non-zero string number of the string to update.
- @param[in] String Update the StringNumber string with String.
- @retval EFI_SUCCESS SmbiosHandle had its StringNumber String updated.
- @retval EFI_INVALID_PARAMETER SmbiosHandle does not exist. Or String is invalid.
- @retval EFI_UNSUPPORTED String was not added because it is longer than the SMBIOS Table supports.
- @retval EFI_NOT_FOUND The StringNumber.is not valid for this SMBIOS record.
- **/
- EFI_STATUS
- EFIAPI
- SmbiosLibUpdateString (
- IN EFI_SMBIOS_HANDLE SmbiosHandle,
- IN SMBIOS_TABLE_STRING StringNumber,
- IN CHAR8 *String
- );
- /**
- Update the string associated with an existing SMBIOS record.
- This function allows the update of specific SMBIOS strings. The number of valid strings for any
- SMBIOS record is defined by how many strings were present when Add() was called.
- @param[in] SmbiosHandle SMBIOS Handle of structure that will have its string updated.
- @param[in] StringNumber The non-zero string number of the string to update.
- @param[in] String Update the StringNumber string with String.
- @retval EFI_SUCCESS SmbiosHandle had its StringNumber String updated.
- @retval EFI_INVALID_PARAMETER SmbiosHandle does not exist. Or String is invalid.
- @retval EFI_UNSUPPORTED String was not added because it is longer than the SMBIOS Table supports.
- @retval EFI_NOT_FOUND The StringNumber.is not valid for this SMBIOS record.
- **/
- EFI_STATUS
- EFIAPI
- SmbiosLibUpdateUnicodeString (
- IN EFI_SMBIOS_HANDLE SmbiosHandle,
- IN SMBIOS_TABLE_STRING StringNumber,
- IN CHAR16 *String
- );
- /**
- Allow caller to read a specific SMBIOS string
- @param[in] Header SMBIOS record that contains the string.
- @param[in[ StringNumber Instance of SMBIOS string 1 - N.
- @retval NULL Instance of Type SMBIOS string was not found.
- @retval Other Pointer to matching SMBIOS string.
- **/
- CHAR8 *
- EFIAPI
- SmbiosLibReadString (
- IN SMBIOS_STRUCTURE *Header,
- IN EFI_SMBIOS_STRING StringNumber
- );
- /**
- Allow the caller to discover a specific SMBIOS entry, and patch it if necissary.
- @param[in] Type Type of the next SMBIOS record to return.
- @param[in[ Instance Instance of SMBIOS record 0 - N-1.
- @param[out] SmbiosHandle Returns SMBIOS handle for the matching record.
- @retval NULL Instance of Type SMBIOS record was not found.
- @retval Other Pointer to matching SMBIOS record.
- **/
- SMBIOS_STRUCTURE *
- EFIAPI
- SmbiosLibGetRecord (
- IN EFI_SMBIOS_TYPE Type,
- IN UINTN Instance,
- OUT EFI_SMBIOS_HANDLE *SmbiosHandle
- );
- /**
- Remove an SMBIOS record.
- This function removes an SMBIOS record using the handle specified by SmbiosHandle.
- @param[in] SmbiosHandle The handle of the SMBIOS record to remove.
- @retval EFI_SUCCESS SMBIOS record was removed.
- @retval EFI_INVALID_PARAMETER SmbiosHandle does not specify a valid SMBIOS record.
- **/
- EFI_STATUS
- EFIAPI
- SmbiosLibRemove (
- OUT EFI_SMBIOS_HANDLE SmbiosHandle
- );
- #endif
|