+/**\r
+ PcdCallBack gets the real set PCD value\r
+\r
+ @param[in] CallBackGuid The PCD token GUID being set.\r
+ @param[in] CallBackToken The PCD token number being set.\r
+ @param[in, out] TokenData A pointer to the token data being set.\r
+ @param[in] TokenDataSize The size, in bytes, of the data being set.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+EdkiiSystemCapsuleLibPcdCallBack (\r
+ IN CONST GUID *CallBackGuid, OPTIONAL\r
+ IN UINTN CallBackToken,\r
+ IN OUT VOID *TokenData,\r
+ IN UINTN TokenDataSize\r
+ )\r
+{\r
+ if (CompareGuid (CallBackGuid, &gEfiSignedCapsulePkgTokenSpaceGuid) &&\r
+ CallBackToken == PcdToken (PcdEdkiiSystemFirmwareImageDescriptor)) {\r
+ mImageFmpInfoSize = TokenDataSize;\r
+ mImageFmpInfo = AllocateCopyPool (mImageFmpInfoSize, TokenData);\r
+ ASSERT(mImageFmpInfo != NULL);\r
+ //\r
+ // Cancel Callback after get the real set value\r
+ //\r
+ LibPcdCancelCallback (\r
+ &gEfiSignedCapsulePkgTokenSpaceGuid,\r
+ PcdToken (PcdEdkiiSystemFirmwareImageDescriptor),\r
+ EdkiiSystemCapsuleLibPcdCallBack\r
+ );\r
+ }\r
+\r
+ if (CompareGuid (CallBackGuid, &gEfiSignedCapsulePkgTokenSpaceGuid) &&\r
+ CallBackToken == PcdToken (PcdEdkiiSystemFirmwareFileGuid)) {\r
+ CopyGuid(&mEdkiiSystemFirmwareFileGuid, TokenData);\r
+ //\r
+ // Cancel Callback after get the real set value\r
+ //\r
+ LibPcdCancelCallback (\r
+ &gEfiSignedCapsulePkgTokenSpaceGuid,\r
+ PcdToken (PcdEdkiiSystemFirmwareFileGuid),\r
+ EdkiiSystemCapsuleLibPcdCallBack\r
+ );\r
+ }\r
+}\r
+\r