+//\r
+// SmramProfile\r
+//\r
+\r
+/**\r
+ Initialize SMRAM profile.\r
+\r
+**/\r
+VOID\r
+SmramProfileInit (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Register SMM image to SMRAM profile.\r
+\r
+ @param DriverEntry SMM image info.\r
+ @param RegisterToDxe Register image to DXE.\r
+\r
+ @retval TRUE Register success.\r
+ @retval FALSE Register fail.\r
+\r
+**/\r
+BOOLEAN\r
+RegisterSmramProfileImage (\r
+ IN EFI_SMM_DRIVER_ENTRY *DriverEntry,\r
+ IN BOOLEAN RegisterToDxe\r
+ );\r
+\r
+/**\r
+ Unregister image from SMRAM profile.\r
+\r
+ @param DriverEntry SMM image info.\r
+ @param UnregisterToDxe Unregister image from DXE.\r
+\r
+ @retval TRUE Unregister success.\r
+ @retval FALSE Unregister fail.\r
+\r
+**/\r
+BOOLEAN\r
+UnregisterSmramProfileImage (\r
+ IN EFI_SMM_DRIVER_ENTRY *DriverEntry,\r
+ IN BOOLEAN UnregisterToDxe\r
+ );\r
+\r
+/**\r
+ Update SMRAM profile information.\r
+\r
+ @param CallerAddress Address of caller who call Allocate or Free.\r
+ @param Action This Allocate or Free action.\r
+ @param MemoryType Memory type.\r
+ @param Size Buffer size.\r
+ @param Buffer Buffer address.\r
+\r
+ @retval TRUE Profile udpate success.\r
+ @retval FALSE Profile update fail.\r
+\r
+**/\r
+BOOLEAN\r
+SmmCoreUpdateProfile (\r
+ IN EFI_PHYSICAL_ADDRESS CallerAddress,\r
+ IN MEMORY_PROFILE_ACTION Action,\r
+ IN EFI_MEMORY_TYPE MemoryType, // Valid for AllocatePages/AllocatePool\r
+ IN UINTN Size, // Valid for AllocatePages/FreePages/AllocatePool\r
+ IN VOID *Buffer\r
+ );\r
+\r
+/**\r
+ Register SMRAM profile handler.\r
+\r
+**/\r
+VOID\r
+RegisterSmramProfileHandler (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ SMRAM profile ready to lock callback function.\r
+\r
+**/\r
+VOID\r
+SmramProfileReadyToLock (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Dump SMRAM infromation.\r
+\r
+**/\r
+VOID\r
+DumpSmramInfo (\r
+ VOID\r
+ );\r
+\r
+extern UINTN mFullSmramRangeCount;\r
+extern EFI_SMRAM_DESCRIPTOR *mFullSmramRanges;\r
+\r