16a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu/** @file 26a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu SMBIOS Protocol as defined in PI1.2 Specification VOLUME 5 Standard. 36a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 46a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu SMBIOS protocol allows consumers to log SMBIOS data records, and enables the producer 56a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu to create the SMBIOS tables for a platform. 66a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 76a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu This protocol provides an interface to add, remove or discover SMBIOS records. The driver which 86a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu produces this protocol is responsible for creating the SMBIOS data tables and installing the pointer 96a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu to the tables in the EFI System Configuration Table. 106a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu The caller is responsible for only adding SMBIOS records that are valid for the SMBIOS 116a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu MajorVersion and MinorVersion. When an enumerated SMBIOS field's values are 126a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu controlled by the DMTF, new values can be used as soon as they are defined by the DMTF without 136a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu requiring an update to MajorVersion and MinorVersion. 146a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu The SMBIOS protocol can only be called a TPL < TPL_NOTIFY. 156a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 162002bf5dd56927cbacbc748120bc6f6f2e3fe12clzeng Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> 179df063a06aef048c042498e2f542fb693e93493ahhtian This program and the accompanying materials 186a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu are licensed and made available under the terms and conditions of the BSD License 196a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu which accompanies this distribution. The full text of the license may be found at 206a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu http://opensource.org/licenses/bsd-license.php 216a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 226a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 236a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 246a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 256a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu**/ 266a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 276a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu#ifndef __SMBIOS_PROTOCOL_H__ 286a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu#define __SMBIOS_PROTOCOL_H__ 296a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 30bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#include <IndustryStandard/SmBios.h> 31bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser 326a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu#define EFI_SMBIOS_PROTOCOL_GUID \ 336a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu { 0x3583ff6, 0xcb36, 0x4940, { 0x94, 0x7e, 0xb9, 0xb3, 0x9f, 0x4a, 0xfa, 0xf7 }} 346a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 35bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_BIOS_INFORMATION SMBIOS_TYPE_BIOS_INFORMATION 36bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_SYSTEM_INFORMATION SMBIOS_TYPE_SYSTEM_INFORMATION 37bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION SMBIOS_TYPE_BASEBOARD_INFORMATION 38bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE SMBIOS_TYPE_SYSTEM_ENCLOSURE 39bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION SMBIOS_TYPE_PROCESSOR_INFORMATION 40bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION 41bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_MEMORY_MODULE_INFORMATON SMBIOS_TYPE_MEMORY_MODULE_INFORMATON 42bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_CACHE_INFORMATION SMBIOS_TYPE_CACHE_INFORMATION 43bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION 44bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_SYSTEM_SLOTS SMBIOS_TYPE_SYSTEM_SLOTS 45bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION 46bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_OEM_STRINGS SMBIOS_TYPE_OEM_STRINGS 47bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS 48bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION 49bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_GROUP_ASSOCIATIONS SMBIOS_TYPE_GROUP_ASSOCIATIONS 50bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_SYSTEM_EVENT_LOG SMBIOS_TYPE_SYSTEM_EVENT_LOG 51bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY 52bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_MEMORY_DEVICE SMBIOS_TYPE_MEMORY_DEVICE 53bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION 54bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS 55bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS 56bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE 57bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_PORTABLE_BATTERY SMBIOS_TYPE_PORTABLE_BATTERY 58bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_SYSTEM_RESET SMBIOS_TYPE_SYSTEM_RESET 59bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_HARDWARE_SECURITY SMBIOS_TYPE_HARDWARE_SECURITY 60bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_SYSTEM_POWER_CONTROLS SMBIOS_TYPE_SYSTEM_POWER_CONTROLS 61bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_VOLTAGE_PROBE SMBIOS_TYPE_VOLTAGE_PROBE 62bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_COOLING_DEVICE SMBIOS_TYPE_COOLING_DEVICE 63bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_TEMPERATURE_PROBE SMBIOS_TYPE_TEMPERATURE_PROBE 64bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE 65bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS 66bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE 67bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION 68bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION 69bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_MANAGEMENT_DEVICE SMBIOS_TYPE_MANAGEMENT_DEVICE 70bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT 71bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA 72bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_MEMORY_CHANNEL SMBIOS_TYPE_MEMORY_CHANNEL 73bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_IPMI_DEVICE_INFORMATION SMBIOS_TYPE_IPMI_DEVICE_INFORMATION 74bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_SYSTEM_POWER_SUPPLY SMBIOS_TYPE_SYSTEM_POWER_SUPPLY 75bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_ADDITIONAL_INFORMATION SMBIOS_TYPE_ADDITIONAL_INFORMATION 76bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 77bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 78bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_INACTIVE SMBIOS_TYPE_INACTIVE 79bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_TYPE_END_OF_TABLE SMBIOS_TYPE_END_OF_TABLE 80bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_OEM_BEGIN SMBIOS_OEM_BEGIN 81bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häuser#define EFI_SMBIOS_OEM_END SMBIOS_OEM_END 826a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 83bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häusertypedef SMBIOS_TABLE_STRING EFI_SMBIOS_STRING; 84bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häusertypedef SMBIOS_TYPE EFI_SMBIOS_TYPE; 85bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häusertypedef SMBIOS_HANDLE EFI_SMBIOS_HANDLE; 86bb7051eba96f87bbb6544cad9cd7390207b4dcc0Marvin Häusertypedef SMBIOS_STRUCTURE EFI_SMBIOS_TABLE_HEADER; 876a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 886a0cd52dc22f0c7b4fa694cda02f4d4adced637cklutypedef struct _EFI_SMBIOS_PROTOCOL EFI_SMBIOS_PROTOCOL; 896a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 906a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu/** 916a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu Add an SMBIOS record. 926a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 936a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu This function allows any agent to add SMBIOS records. The caller is responsible for ensuring 946a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu Record is formatted in a way that matches the version of the SMBIOS specification as defined in 956a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu the MajorRevision and MinorRevision fields of the EFI_SMBIOS_PROTOCOL. 966a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu Record must follow the SMBIOS structure evolution and usage guidelines in the SMBIOS 976a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu specification. Record starts with the formatted area of the SMBIOS structure and the length is 986a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu defined by EFI_SMBIOS_TABLE_HEADER.Length. Each SMBIOS structure is terminated by a 996a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu double-null (0x0000), either directly following the formatted area (if no strings are present) or 1006a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu directly following the last string. The number of optional strings is not defined by the formatted area, 1016a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu but is fixed by the call to Add(). A string can be a place holder, but it must not be a NULL string as 1026a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu two NULL strings look like the double-null that terminates the structure. 1036a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1046a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] This The EFI_SMBIOS_PROTOCOL instance. 1056a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] ProducerHandle The handle of the controller or driver associated with the SMBIOS information. NULL means no handle. 106eb2423c9ee10b31d6ff4d34761a083df0486c5b8lzeng @param[in, out] SmbiosHandle On entry, the handle of the SMBIOS record to add. If FFFEh, then a unique handle 107eb2423c9ee10b31d6ff4d34761a083df0486c5b8lzeng will be assigned to the SMBIOS record. If the SMBIOS handle is already in use, 1086a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu EFI_ALREADY_STARTED is returned and the SMBIOS record is not updated. 1096a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] Record The data for the fixed portion of the SMBIOS record. The format of the record is 1106a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu determined by EFI_SMBIOS_TABLE_HEADER.Type. The size of the formatted 1116a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu area is defined by EFI_SMBIOS_TABLE_HEADER.Length and either followed 1126a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu by a double-null (0x0000) or a set of null terminated strings and a null. 1136a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1146a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @retval EFI_SUCCESS Record was added. 1156a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @retval EFI_OUT_OF_RESOURCES Record was not added. 1166a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @retval EFI_ALREADY_STARTED The SmbiosHandle passed in was already in use. 1176a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu**/ 1186a0cd52dc22f0c7b4fa694cda02f4d4adced637cklutypedef 1196a0cd52dc22f0c7b4fa694cda02f4d4adced637ckluEFI_STATUS 1206a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu(EFIAPI *EFI_SMBIOS_ADD)( 1216a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN CONST EFI_SMBIOS_PROTOCOL *This, 1223e22fec9612a106e11df03acab38b2efe286e992klu IN EFI_HANDLE ProducerHandle OPTIONAL, 1236a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN OUT EFI_SMBIOS_HANDLE *SmbiosHandle, 1246a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN EFI_SMBIOS_TABLE_HEADER *Record 1256a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu); 1266a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1276a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu/** 1286a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu Update the string associated with an existing SMBIOS record. 1296a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1306a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu This function allows the update of specific SMBIOS strings. The number of valid strings for any 1316a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu SMBIOS record is defined by how many strings were present when Add() was called. 1326a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1336a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] This The EFI_SMBIOS_PROTOCOL instance. 1346a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] SmbiosHandle SMBIOS Handle of structure that will have its string updated. 1356a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] StringNumber The non-zero string number of the string to update. 1366a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] String Update the StringNumber string with String. 1376a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1386a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @retval EFI_SUCCESS SmbiosHandle had its StringNumber String updated. 1396a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @retval EFI_INVALID_PARAMETER SmbiosHandle does not exist. 140eb2423c9ee10b31d6ff4d34761a083df0486c5b8lzeng @retval EFI_UNSUPPORTED String was not added because it is longer than the SMBIOS Table supports. 1416a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @retval EFI_NOT_FOUND The StringNumber.is not valid for this SMBIOS record. 1426a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu**/ 1436a0cd52dc22f0c7b4fa694cda02f4d4adced637cklutypedef 1446a0cd52dc22f0c7b4fa694cda02f4d4adced637ckluEFI_STATUS 1456a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu(EFIAPI *EFI_SMBIOS_UPDATE_STRING)( 1466a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN CONST EFI_SMBIOS_PROTOCOL *This, 1476a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN EFI_SMBIOS_HANDLE *SmbiosHandle, 1486a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN UINTN *StringNumber, 1496a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN CHAR8 *String 1506a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu); 1516a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1526a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu/** 1536a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu Remove an SMBIOS record. 1546a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1556a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu This function removes an SMBIOS record using the handle specified by SmbiosHandle. 1566a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1576a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] This The EFI_SMBIOS_PROTOCOL instance. 1586a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] SmbiosHandle The handle of the SMBIOS record to remove. 1596a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1606a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @retval EFI_SUCCESS SMBIOS record was removed. 1616a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @retval EFI_INVALID_PARAMETER SmbiosHandle does not specify a valid SMBIOS record. 1626a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu**/ 1636a0cd52dc22f0c7b4fa694cda02f4d4adced637cklutypedef 1646a0cd52dc22f0c7b4fa694cda02f4d4adced637ckluEFI_STATUS 1656a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu(EFIAPI *EFI_SMBIOS_REMOVE)( 1666a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN CONST EFI_SMBIOS_PROTOCOL *This, 1676a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN EFI_SMBIOS_HANDLE SmbiosHandle 1686a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu); 1696a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1706a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu/** 1716a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu Allow the caller to discover all or some of the SMBIOS records. 1726a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1736a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu This function allows all of the SMBIOS records to be discovered. It's possible to find 1746a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu only the SMBIOS records that match the optional Type argument. 1756a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 1766a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] This The EFI_SMBIOS_PROTOCOL instance. 1776a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in, out] SmbiosHandle On entry, points to the previous handle of the SMBIOS record. On exit, points to the 178eb2423c9ee10b31d6ff4d34761a083df0486c5b8lzeng next SMBIOS record handle. If it is FFFEh on entry, then the first SMBIOS record 179eb2423c9ee10b31d6ff4d34761a083df0486c5b8lzeng handle will be returned. If it returns FFFEh on exit, then there are no more SMBIOS records. 1806a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[in] Type On entry, it points to the type of the next SMBIOS record to return. If NULL, it 1816a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu indicates that the next record of any type will be returned. Type is not 1826a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu modified by the this function. 1836a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[out] Record On exit, points to a pointer to the the SMBIOS Record consisting of the formatted area 1846a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu followed by the unformatted area. The unformatted area optionally contains text strings. 1856a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @param[out] ProducerHandle On exit, points to the ProducerHandle registered by Add(). If no 1866a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu ProducerHandle was passed into Add() NULL is returned. If a NULL pointer is 1876a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu passed in no data will be returned. 1886a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @retval EFI_SUCCESS SMBIOS record information was successfully returned in Record. 1896a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu SmbiosHandle is the handle of the current SMBIOS record 1906a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu @retval EFI_NOT_FOUND The SMBIOS record with SmbiosHandle was the last available record. 1916a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu**/ 1926a0cd52dc22f0c7b4fa694cda02f4d4adced637cklutypedef 1936a0cd52dc22f0c7b4fa694cda02f4d4adced637ckluEFI_STATUS 1946a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu(EFIAPI *EFI_SMBIOS_GET_NEXT)( 1956a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN CONST EFI_SMBIOS_PROTOCOL *This, 1966a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu IN OUT EFI_SMBIOS_HANDLE *SmbiosHandle, 1973e22fec9612a106e11df03acab38b2efe286e992klu IN EFI_SMBIOS_TYPE *Type OPTIONAL, 1986a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu OUT EFI_SMBIOS_TABLE_HEADER **Record, 1993e22fec9612a106e11df03acab38b2efe286e992klu OUT EFI_HANDLE *ProducerHandle OPTIONAL 2006a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu); 2016a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 2026a0cd52dc22f0c7b4fa694cda02f4d4adced637cklustruct _EFI_SMBIOS_PROTOCOL { 2036a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu EFI_SMBIOS_ADD Add; 2046a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu EFI_SMBIOS_UPDATE_STRING UpdateString; 2056a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu EFI_SMBIOS_REMOVE Remove; 2066a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu EFI_SMBIOS_GET_NEXT GetNext; 2076a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu UINT8 MajorVersion; ///< The major revision of the SMBIOS specification supported. 2086a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu UINT8 MinorVersion; ///< The minor revision of the SMBIOS specification supported. 2096a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu}; 2106a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 2116a0cd52dc22f0c7b4fa694cda02f4d4adced637ckluextern EFI_GUID gEfiSmbiosProtocolGuid; 2126a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu 2136a0cd52dc22f0c7b4fa694cda02f4d4adced637cklu#endif // __SMBIOS_PROTOCOL_H__ 214