EFI_HANDLE DispatchHandle;\r
EFI_HANDLE SmmImageHandle;\r
EFI_SMM_CALLBACK_ENTRY_POINT CallbackAddress;\r
+ VOID *CommunicationBuffer;\r
+ UINTN *SourceSize;\r
} CALLBACK_INFO;\r
\r
typedef struct {\r
///\r
Status = (CallbackInfo->CallbackAddress) (\r
CallbackInfo->SmmImageHandle,\r
- CommBuffer,\r
- CommBufferSize\r
+ CallbackInfo->CommunicationBuffer,\r
+ CallbackInfo->SourceSize\r
);\r
///\r
/// Save CPU Save States in case any of them was modified\r
///\r
/// Allocate buffer for callback thunk information\r
///\r
- Buffer = (CALLBACK_INFO *)AllocatePool (sizeof (CALLBACK_INFO));\r
+ Buffer = (CALLBACK_INFO *)AllocateZeroPool (sizeof (CALLBACK_INFO));\r
if (Buffer == NULL) {\r
FunctionData->Status = EFI_OUT_OF_RESOURCES;\r
return;\r
CallbackInfo = (CALLBACK_INFO *)Node;\r
\r
if (FunctionData->Args.Communicate.ImageHandle == CallbackInfo->SmmImageHandle) {\r
- ///\r
- /// Thunk into original Framwork SMI handler\r
- ///\r
- (CallbackInfo->CallbackAddress) (\r
- CallbackInfo->SmmImageHandle,\r
- FunctionData->Args.Communicate.CommunicationBuffer,\r
- FunctionData->Args.Communicate.SourceSize\r
- );\r
+ CallbackInfo->CommunicationBuffer = FunctionData->Args.Communicate.CommunicationBuffer;\r
+ CallbackInfo->SourceSize = FunctionData->Args.Communicate.SourceSize;\r
+\r
///\r
/// The message was successfully posted.\r
///\r