+ }\r
+\r
+ //\r
+ // If GetEventLog is called, record to FinalEventsTable, too.\r
+ //\r
+ if (mTcgDxeData.GetEventLogCalled[Index]) {\r
+ if (mTcgDxeData.FinalEventsTable[Index] == NULL) {\r
+ //\r
+ // no need for FinalEventsTable\r
+ //\r
+ return EFI_SUCCESS;\r
+ }\r
+ EventLogAreaStruct = &mTcgDxeData.FinalEventLogAreaStruct[Index];\r
+\r
+ if (EventLogAreaStruct->EventLogTruncated) {\r
+ return EFI_VOLUME_FULL;\r
+ }\r
+\r
+ EventLogAreaStruct->LastEvent = (UINT8*)(UINTN)EventLogAreaStruct->Lasa;\r
+ Status = TcgCommLogEvent (\r
+ &EventLogAreaStruct->LastEvent,\r
+ &EventLogAreaStruct->EventLogSize,\r
+ (UINTN)EventLogAreaStruct->Laml,\r
+ NewEventHdr,\r
+ NewEventHdrSize,\r
+ NewEventData,\r
+ NewEventSize\r
+ );\r
+ if (Status == EFI_OUT_OF_RESOURCES) {\r
+ EventLogAreaStruct->EventLogTruncated = TRUE;\r
+ return EFI_VOLUME_FULL;\r
+ } else if (Status == EFI_SUCCESS) {\r
+ EventLogAreaStruct->EventLogStarted = TRUE;\r
+ //\r
+ // Increase the NumberOfEvents in FinalEventsTable\r
+ //\r