+/**\r
+ Retrieves a previously logged performance measurement.\r
+ It can also retrieve the log created by StartGauge and EndGauge of PERFORMANCE_PROTOCOL,\r
+ and then assign the Identifier with 0.\r
+\r
+ Retrieves the performance log entry from the performance log specified by LogEntryKey.\r
+ If it stands for a valid entry, then EFI_SUCCESS is returned and\r
+ GaugeDataEntryEx stores the pointer to that entry.\r
+\r
+ @param LogEntryKey The key for the previous performance measurement log entry.\r
+ If 0, then the first performance measurement log entry is retrieved.\r
+ @param GaugeDataEntryEx The indirect pointer to the extended gauge data entry specified by LogEntryKey\r
+ if the retrieval is successful.\r
+\r
+ @retval EFI_SUCCESS The GuageDataEntryEx is successfully found based on LogEntryKey.\r
+ @retval EFI_NOT_FOUND The LogEntryKey is the last entry (equals to the total entry number).\r
+ @retval EFI_INVALIDE_PARAMETER The LogEntryKey is not a valid entry (greater than the total entry number).\r
+ @retval EFI_INVALIDE_PARAMETER GaugeDataEntryEx is NULL.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+GetGaugeEx (\r
+ IN UINTN LogEntryKey,\r
+ OUT GAUGE_DATA_ENTRY_EX **GaugeDataEntryEx\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+\r
+ Status = EfiAcquireLockOrFail (&mPerfRecordLock);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+\r
+ Status = InternalGetGaugeEx (LogEntryKey, GaugeDataEntryEx);\r
+\r
+ EfiReleaseLock (&mPerfRecordLock);\r
+\r
+ return Status;\r
+}\r
+\r