- Status = gSmst->SmmAllocatePool (\r
- EfiRuntimeServicesCode,\r
- sizeof (CALLBACK_INFO),\r
- (VOID **)&Buffer\r
- );\r
- if (!EFI_ERROR (Status)) {\r
- ///\r
- /// Fill SmmImageHandle and CallbackAddress into the thunk\r
- ///\r
- Buffer->SmmImageHandle = FunctionData->Args.RegisterCallback.SmmImageHandle;\r
- Buffer->CallbackAddress = FunctionData->Args.RegisterCallback.CallbackAddress;\r
-\r
- ///\r
- /// Register the thunk code as a root SMI handler\r
- ///\r
- Status = gSmst->SmiHandlerRegister (\r
- CallbackThunk,\r
- NULL,\r
- &Buffer->DispatchHandle\r
- );\r
- if (!EFI_ERROR (Status)) {\r
- ///\r
- /// Save this callback info\r
- ///\r
- InsertTailList (&mCallbackInfoListHead, &Buffer->Link);\r
- } else {\r
- gSmst->SmmFreePool (Buffer);\r
- }\r
+ Buffer = (CALLBACK_INFO *)AllocatePool (sizeof (CALLBACK_INFO));\r
+ if (Buffer == NULL) {\r
+ FunctionData->Status = EFI_OUT_OF_RESOURCES;\r
+ return;\r