From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 77C3C94189B for ; Thu, 21 Mar 2024 15:54:03 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=aE6RZo7gDdSjkaguRuziasNwAsCU05GuVAUf9g6x3Yk=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20240206; t=1711036442; v=1; b=JJha3pr3/NxaeHob9YF5NBuJqPP+nT0BN39wZtt3kE/zqzOHaGLi1Qj80+yaKzE/je4NaxfI luQEq/8yp32+xK2JS14GJj1U/jEy8HsEl7AGpRlkdJt4zbRC+my+Ul4IkEYz0kZjrIBni7a+8v0 dQv9Y/bFcfbxe9BOtupHNA6OzkuK1Ot5OnSF9JrfwmDvo3w6qHDS3w/2a9/zm6VmQAUIvyYhkRC 4y7hb3Ldijpbqpsd9ZwVwXCNRw7Iebo355OuXJA2zyQS0bmLLBsNuEchshbg8IIGfYEZ4xTxYbj wIGIG6F5n4SqBfdZxOKbovvQCaK+wUCZCUN/IbmncNvMA== X-Received: by 127.0.0.2 with SMTP id ZOrrYY7687511xbnuqvntMhD; Thu, 21 Mar 2024 08:54:02 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.357.1711036441583318914 for ; Thu, 21 Mar 2024 08:54:01 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8DD031007; Thu, 21 Mar 2024 08:54:35 -0700 (PDT) X-Received: from e126645.nice.arm.com (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 9BDD53F67D; Thu, 21 Mar 2024 08:53:58 -0700 (PDT) From: "PierreGondois" To: devel@edk2.groups.io Cc: Pierre Gondois , Sami Mujawar , Pierre Gondois , Yeo Reum Yun , Sunil V L , AbdulLateef Attar , Jeshua Smith , Jeff Brasen , Girish Mahadevan , Leif Lindholm , Meenakshi Aggarwal Subject: [edk2-devel] [PATCH 03/16] DynamicTablesPkg: Introduce ObjectId to validate CmObject Parser Array Date: Thu, 21 Mar 2024 16:53:06 +0100 Message-Id: <20240321155319.701355-4-pierre.gondois@arm.com> In-Reply-To: <20240321155319.701355-1-pierre.gondois@arm.com> References: <20240321155319.701355-1-pierre.gondois@arm.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Thu, 21 Mar 2024 08:54:01 -0700 Reply-To: devel@edk2.groups.io,pierre.gondois@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: WSq0K9h7NVWpQHrrCODZMSq1x7686176AA= Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=JJha3pr3; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io From: Sami Mujawar Add ObjectId to CM_OBJ_PARSER_ARRAY so that the code can validate the entries in the Cm object parser array. Also introduce helper macros to populate the Cm Object Parser Arrays. Cc: Pierre Gondois Cc: Yeo Reum Yun Cc: AbdulLateef Attar Cc: Jeshua Smith Cc: Jeff Brasen Cc: Girish Mahadevan Cc: Leif Lindholm Cc: Meenakshi Aggarwal Signed-off-by: Sami Mujawar Signed-off-by: Pierre Gondois --- .../ConfigurationManagerObjectParser.c | 165 +++++++----------- .../ConfigurationManagerObjectParser.h | 15 ++ 2 files changed, 75 insertions(+), 105 deletions(-) diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationMa= nagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/Config= urationManagerObjectParser.c index f96b05b1c0b9..68d6c57acfc0 100644 --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerOb= jectParser.c +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerOb= jectParser.c @@ -670,103 +670,58 @@ STATIC CONST CM_OBJ_PARSER CmArmPsdInfoParser[] =3D= { /** A parser for Arm namespace objects.=0D */=0D STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] =3D {=0D - { "EArmObjReserved", NULL, = 0 },=0D - { "EArmObjBootArchInfo", CmArmBootArchInfoParser,=0D - ARRAY_SIZE (CmArmBootArchInfoParser) },=0D - { "EArmObjCpuInfo", NULL, = 0 },=0D - { "EArmObjPowerManagementProfileInfo", CmArmPowerManagementProfileInfo= Parser,=0D - ARRAY_SIZE (CmArmPowerManagementProfileInfoParser) },=0D - { "EArmObjGicCInfo", CmArmGicCInfoParser, = ARRAY_SIZE (CmArmGicCInfoParser) },=0D - { "EArmObjGicDInfo", CmArmGicDInfoParser, = ARRAY_SIZE (CmArmGicDInfoParser) },=0D - { "EArmObjGicMsiFrameInfo", CmArmGicMsiFrameInfoParser,=0D - ARRAY_SIZE (CmArmGicMsiFrameInfoParser) },=0D - { "EArmObjGicRedistributorInfo", CmArmGicRedistInfoParser,=0D - ARRAY_SIZE (CmArmGicRedistInfoParser) },=0D - { "EArmObjGicItsInfo", CmArmGicItsInfoParser,=0D - ARRAY_SIZE (CmArmGicItsInfoParser) },=0D - { "EArmObjSerialConsolePortInfo", CmArmSerialPortInfoParser,=0D - ARRAY_SIZE (CmArmSerialPortInfoParser) },=0D - { "EArmObjSerialDebugPortInfo", CmArmSerialPortInfoParser,=0D - ARRAY_SIZE (CmArmSerialPortInfoParser) },=0D - { "EArmObjGenericTimerInfo", CmArmGenericTimerInfoParser,=0D - ARRAY_SIZE (CmArmGenericTimerInfoParser) },=0D - { "EArmObjPlatformGTBlockInfo", CmArmGTBlockInfoParser,=0D - ARRAY_SIZE (CmArmGTBlockInfoParser) },=0D - { "EArmObjGTBlockTimerFrameInfo", CmArmGTBlockTimerFrameInfoParse= r,=0D - ARRAY_SIZE (CmArmGTBlockTimerFrameInfoParser) },=0D - { "EArmObjPlatformGenericWatchdogInfo", CmArmGenericWatchdogInfoParser,= =0D - ARRAY_SIZE (CmArmGenericWatchdogInfoParser) },=0D - { "EArmObjPciConfigSpaceInfo", CmArmPciConfigSpaceInfoParser,= =0D - ARRAY_SIZE (CmArmPciConfigSpaceInfoParser) },=0D - { "EArmObjHypervisorVendorIdentity", CmArmHypervisorVendorIdParser,= =0D - ARRAY_SIZE (CmArmHypervisorVendorIdParser) },=0D - { "EArmObjFixedFeatureFlags", CmArmFixedFeatureFlagsParser,=0D - ARRAY_SIZE (CmArmFixedFeatureFlagsParser) },=0D - { "EArmObjItsGroup", CmArmItsGroupNodeParser,=0D - ARRAY_SIZE (CmArmItsGroupNodeParser) },=0D - { "EArmObjNamedComponent", CmArmNamedComponentNodeParser,= =0D - ARRAY_SIZE (CmArmNamedComponentNodeParser) },=0D - { "EArmObjRootComplex", CmArmRootComplexNodeParser,=0D - ARRAY_SIZE (CmArmRootComplexNodeParser) },=0D - { "EArmObjSmmuV1SmmuV2", CmArmSmmuV1SmmuV2NodeParser,=0D - ARRAY_SIZE (CmArmSmmuV1SmmuV2NodeParser) },=0D - { "EArmObjSmmuV3", CmArmSmmuV3NodeParser,=0D - ARRAY_SIZE (CmArmSmmuV3NodeParser) },=0D - { "EArmObjPmcg", CmArmPmcgNodeParser, = ARRAY_SIZE (CmArmPmcgNodeParser) },=0D - { "EArmObjGicItsIdentifierArray", CmArmGicItsIdentifierParser,=0D - ARRAY_SIZE (CmArmGicItsIdentifierParser) },=0D - { "EArmObjIdMappingArray", CmArmIdMappingParser,=0D - ARRAY_SIZE (CmArmIdMappingParser) },=0D - { "EArmObjSmmuInterruptArray", CmArmGenericInterruptParser,=0D - ARRAY_SIZE (CmArmGenericInterruptParser) },=0D - { "EArmObjProcHierarchyInfo", CmArmProcHierarchyInfoParser,=0D - ARRAY_SIZE (CmArmProcHierarchyInfoParser) },=0D - { "EArmObjCacheInfo", CmArmCacheInfoParser,=0D - ARRAY_SIZE (CmArmCacheInfoParser) },=0D - { "EArmObjReserved29", NULL, = 0 },=0D - { "EArmObjCmRef", CmArmObjRefParser, = ARRAY_SIZE (CmArmObjRefParser) },=0D - { "EArmObjMemoryAffinityInfo", CmArmMemoryAffinityInfoParser,= =0D - ARRAY_SIZE (CmArmMemoryAffinityInfoParser) },=0D - { "EArmObjDeviceHandleAcpi", CmArmDeviceHandleAcpiParser,=0D - ARRAY_SIZE (CmArmDeviceHandleAcpiParser) },=0D - { "EArmObjDeviceHandlePci", CmArmDeviceHandlePciParser,=0D - ARRAY_SIZE (CmArmDeviceHandlePciParser) },=0D - { "EArmObjGenericInitiatorAffinityInfo",=0D - CmArmGenericInitiatorAffinityInfoParser,=0D - ARRAY_SIZE (CmArmGenericInitiatorAffinityInfoParser) },=0D - { "EArmObjSerialPortInfo", CmArmSerialPortInfoParser,=0D - ARRAY_SIZE (CmArmSerialPortInfoParser) },=0D - { "EArmObjCmn600Info", CmArmCmn600InfoParser,=0D - ARRAY_SIZE (CmArmCmn600InfoParser) },=0D - { "EArmObjLpiInfo", CmArmLpiInfoParser,=0D - ARRAY_SIZE (CmArmLpiInfoParser) },=0D - { "EArmObjPciAddressMapInfo", CmArmPciAddressMapInfoParser,=0D - ARRAY_SIZE (CmArmPciAddressMapInfoParser) },=0D - { "EArmObjPciInterruptMapInfo", CmPciInterruptMapInfoParser,=0D - ARRAY_SIZE (CmPciInterruptMapInfoParser) },=0D - { "EArmObjRmr", CmArmRmrInfoParser,=0D - ARRAY_SIZE (CmArmRmrInfoParser) },=0D - { "EArmObjMemoryRangeDescriptor", CmArmMemoryRangeDescriptorInfoP= arser,=0D - ARRAY_SIZE (CmArmMemoryRangeDescriptorInfoParser) },=0D - { "EArmObjCpcInfo", CmArmCpcInfoParser,=0D - ARRAY_SIZE (CmArmCpcInfoParser) },=0D - { "EArmObjPccSubspaceType0Info", CmArmPccSubspaceType0InfoParser= ,=0D - ARRAY_SIZE (CmArmPccSubspaceType0InfoParser) },=0D - { "EArmObjPccSubspaceType1Info", CmArmPccSubspaceType1InfoParser= ,=0D - ARRAY_SIZE (CmArmPccSubspaceType1InfoParser) },=0D - { "EArmObjPccSubspaceType2Info", CmArmPccSubspaceType2InfoParser= ,=0D - ARRAY_SIZE (CmArmPccSubspaceType2InfoParser) },=0D - { "EArmObjPccSubspaceType3Info", CmArmPccSubspaceType34InfoParse= r,=0D - ARRAY_SIZE (CmArmPccSubspaceType34InfoParser) },=0D - { "EArmObjPccSubspaceType4Info", CmArmPccSubspaceType34InfoParse= r,=0D - ARRAY_SIZE (CmArmPccSubspaceType34InfoParser) },=0D - { "EArmObjPccSubspaceType5Info", CmArmPccSubspaceType5InfoParser= ,=0D - ARRAY_SIZE (CmArmPccSubspaceType5InfoParser) },=0D - { "EArmObjEtInfo", CmArmEtInfo,=0D - ARRAY_SIZE (CmArmEtInfo) },=0D - { "EArmObjPsdInfo", CmArmPsdInfoParser,=0D - ARRAY_SIZE (CmArmPsdInfoParser) },=0D - { "EArmObjMax", NULL, = 0 },=0D + CM_PARSER_ADD_OBJECT_RESERVED (EArmObjReserved),=0D + CM_PARSER_ADD_OBJECT (EArmObjBootArchInfo, CmArmBootArchI= nfoParser),=0D + CM_PARSER_ADD_OBJECT_RESERVED (EArmObjCpuInfo),=0D + CM_PARSER_ADD_OBJECT (EArmObjPowerManagementProfileInfo, CmArmPowerMana= gementProfileInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjGicCInfo, CmArmGicCInfoP= arser),=0D + CM_PARSER_ADD_OBJECT (EArmObjGicDInfo, CmArmGicDInfoP= arser),=0D + CM_PARSER_ADD_OBJECT (EArmObjGicMsiFrameInfo, CmArmGicMsiFra= meInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjGicRedistributorInfo, CmArmGicRedist= InfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjGicItsInfo, CmArmGicItsInf= oParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjSerialConsolePortInfo, CmArmSerialPor= tInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjSerialDebugPortInfo, CmArmSerialPor= tInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjGenericTimerInfo, CmArmGenericTi= merInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPlatformGTBlockInfo, CmArmGTBlockIn= foParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjGTBlockTimerFrameInfo, CmArmGTBlockTi= merFrameInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPlatformGenericWatchdogInfo, CmArmGenericWa= tchdogInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPciConfigSpaceInfo, CmArmPciConfig= SpaceInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjHypervisorVendorIdentity, CmArmHyperviso= rVendorIdParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjFixedFeatureFlags, CmArmFixedFeat= ureFlagsParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjItsGroup, CmArmItsGroupN= odeParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjNamedComponent, CmArmNamedComp= onentNodeParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjRootComplex, CmArmRootCompl= exNodeParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjSmmuV1SmmuV2, CmArmSmmuV1Smm= uV2NodeParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjSmmuV3, CmArmSmmuV3Nod= eParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPmcg, CmArmPmcgNodeP= arser),=0D + CM_PARSER_ADD_OBJECT (EArmObjGicItsIdentifierArray, CmArmGicItsIde= ntifierParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjIdMappingArray, CmArmIdMapping= Parser),=0D + CM_PARSER_ADD_OBJECT (EArmObjSmmuInterruptArray, CmArmGenericIn= terruptParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjProcHierarchyInfo, CmArmProcHiera= rchyInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjCacheInfo, CmArmCacheInfo= Parser),=0D + CM_PARSER_ADD_OBJECT_RESERVED (EArmObjReserved29),=0D + CM_PARSER_ADD_OBJECT (EArmObjCmRef, CmArmObjRefPar= ser),=0D + CM_PARSER_ADD_OBJECT (EArmObjMemoryAffinityInfo, CmArmMemoryAff= inityInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjDeviceHandleAcpi, CmArmDeviceHan= dleAcpiParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjDeviceHandlePci, CmArmDeviceHan= dlePciParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjGenericInitiatorAffinityInfo,CmArmGenericIn= itiatorAffinityInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjSerialPortInfo, CmArmSerialPor= tInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjCmn600Info, CmArmCmn600Inf= oParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjLpiInfo, CmArmLpiInfoPa= rser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPciAddressMapInfo, CmArmPciAddres= sMapInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPciInterruptMapInfo, CmPciInterrupt= MapInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjRmr, CmArmRmrInfoPa= rser),=0D + CM_PARSER_ADD_OBJECT (EArmObjMemoryRangeDescriptor, CmArmMemoryRan= geDescriptorInfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjCpcInfo, CmArmCpcInfoPa= rser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType0Info, CmArmPccSubspa= ceType0InfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType1Info, CmArmPccSubspa= ceType1InfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType2Info, CmArmPccSubspa= ceType2InfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType3Info, CmArmPccSubspa= ceType34InfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType4Info, CmArmPccSubspa= ceType34InfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjPccSubspaceType5Info, CmArmPccSubspa= ceType5InfoParser),=0D + CM_PARSER_ADD_OBJECT (EArmObjEtInfo, CmArmEtInfo),= =0D + CM_PARSER_ADD_OBJECT (EArmObjPsdInfo, CmArmPsdInfoPa= rser),=0D + CM_PARSER_ADD_OBJECT_RESERVED (EArmObjMax)=0D };=0D =0D /** A parser for EStdObjCfgMgrInfo.=0D @@ -798,13 +753,10 @@ STATIC CONST CM_OBJ_PARSER StdObjSmbiosTableInfoPars= er[] =3D { /** A parser for Standard namespace objects.=0D */=0D STATIC CONST CM_OBJ_PARSER_ARRAY StdNamespaceObjectParser[] =3D {=0D - { "EStdObjCfgMgrInfo", StdObjCfgMgrInfoParser,=0D - ARRAY_SIZE (StdObjCfgMgrInfoParser) },=0D - { "EStdObjAcpiTableList", StdObjAcpiTableInfoParser,=0D - ARRAY_SIZE (StdObjAcpiTableInfoParser) },=0D - { "EStdObjSmbiosTableList", StdObjSmbiosTableInfoParser,=0D - ARRAY_SIZE (StdObjSmbiosTableInfoParser) },=0D - { "EStdObjMax", NULL, 0}=0D + CM_PARSER_ADD_OBJECT (EStdObjCfgMgrInfo, StdObjCfgMgrInfoParser),=0D + CM_PARSER_ADD_OBJECT (EStdObjAcpiTableList, StdObjAcpiTableInfoParser)= ,=0D + CM_PARSER_ADD_OBJECT (EStdObjSmbiosTableList, StdObjSmbiosTableInfoParse= r),=0D + CM_PARSER_ADD_OBJECT_RESERVED (EStdObjMax)=0D };=0D =0D /** Print string data.=0D @@ -975,7 +927,7 @@ PrintCmObjDesc ( *RemainingSize -=3D Parser[Index].Length;=0D if (*RemainingSize < 0) {=0D DEBUG ((=0D - DEBUG_INFO,=0D + DEBUG_ERROR,=0D "\nERROR: %a: Buffer overrun\n",=0D Parser[Index].NameStr=0D ));=0D @@ -1118,6 +1070,9 @@ ParseCmObjDesc ( ObjIndex + 1,=0D ObjectCount=0D ));=0D +=0D + ASSERT (ObjId =3D=3D ParserArray->ObjectId);=0D +=0D if (ParserArray->Parser =3D=3D NULL) {=0D DEBUG ((DEBUG_ERROR, "Parser not implemented\n"));=0D RemainingSize =3D 0;=0D diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationMa= nagerObjectParser.h b/DynamicTablesPkg/Library/Common/TableHelperLib/Config= urationManagerObjectParser.h index 3204f5314340..d996d05a55dd 100644 --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerOb= jectParser.h +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerOb= jectParser.h @@ -11,6 +11,18 @@ =0D #define OUTPUT_FIELD_COLUMN_WIDTH 32=0D =0D +/** A helper macro for populating the Reserved objects=0D + like EArmObjReserved, EArmObjMax, etc. in the CM_OBJ_PARSER_ARRAY.=0D +**/=0D +#define CM_PARSER_ADD_OBJECT_RESERVED(ObjectId) \=0D + {ObjectId, #ObjectId, NULL, 0}=0D +=0D +/** A helper macro for populating the Cm Arm objects=0D + in the CM_OBJ_PARSER_ARRAY.=0D +**/=0D +#define CM_PARSER_ADD_OBJECT(ObjectId, Parser) \=0D + {ObjectId, #ObjectId, Parser, ARRAY_SIZE(Parser) }=0D +=0D /** Function prototype to format a field print.=0D =0D @param [in] Format Format string for tracing the data as specified by=0D @@ -58,6 +70,9 @@ struct CmObjParser { with their object names.=0D */=0D typedef struct CmObjParserArray {=0D + /// Object ID=0D + CONST UINTN ObjectId;=0D +=0D /// Object name=0D CONST CHAR8 *ObjectName;=0D =0D --=20 2.25.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#116964): https://edk2.groups.io/g/devel/message/116964 Mute This Topic: https://groups.io/mt/105067968/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-