+/**\r
+ Convert EFI_SMM_SW_REGISTER_CONTEXT to SMI_HANDLER_PROFILE_SW_REGISTER_CONTEXT.\r
+\r
+ @param SwContext A pointer to EFI_SMM_SW_REGISTER_CONTEXT\r
+ @param SwContextSize The size of EFI_SMM_SW_REGISTER_CONTEXT in bytes\r
+ @param SmiHandlerSwContextSize The size of SMI_HANDLER_PROFILE_SW_REGISTER_CONTEXT in bytes\r
+\r
+ @return SmiHandlerSwContext A pointer to SMI_HANDLER_PROFILE_SW_REGISTER_CONTEXT\r
+**/\r
+SMI_HANDLER_PROFILE_SW_REGISTER_CONTEXT *\r
+ConvertSmiHandlerSwContext (\r
+ IN EFI_SMM_SW_REGISTER_CONTEXT *SwContext,\r
+ IN UINTN SwContextSize,\r
+ OUT UINTN *SmiHandlerSwContextSize\r
+ )\r
+{\r
+ SMI_HANDLER_PROFILE_SW_REGISTER_CONTEXT *SmiHandlerSwContext;\r
+\r
+ ASSERT (SwContextSize == sizeof(EFI_SMM_SW_REGISTER_CONTEXT));\r
+\r
+ SmiHandlerSwContext = AllocatePool (sizeof (SMI_HANDLER_PROFILE_SW_REGISTER_CONTEXT));\r
+ if (SmiHandlerSwContext == NULL) {\r
+ *SmiHandlerSwContextSize = 0;\r
+ return NULL;\r
+ }\r
+ SmiHandlerSwContext->SwSmiInputValue = SwContext->SwSmiInputValue;\r
+ *SmiHandlerSwContextSize = sizeof (SMI_HANDLER_PROFILE_SW_REGISTER_CONTEXT);\r
+ return SmiHandlerSwContext;\r
+}\r
+\r