\r
#include "EdkIIGlueDxe.h"\r
\r
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
//\r
// Global pointer to the Status Code Protocol\r
//\r
static EFI_STATUS_CODE_PROTOCOL *gStatusCode = NULL;\r
\r
-#endif\r
\r
/**\r
Internal worker function that reports a status code through the Status Code Protocol\r
IN EFI_STATUS_CODE_DATA *Data OPTIONAL \r
)\r
{\r
-#if (EFI_SPECIFICATION_VERSION >= 0x00020000)\r
-\r
EFI_STATUS Status;\r
\r
- //\r
- // If gStatusCode is NULL, then see if a Status Code Protocol instance is present \r
- // in the handle database.\r
- //\r
- if (gStatusCode == NULL) {\r
- Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);\r
- if (EFI_ERROR (Status) || gStatusCode == NULL) {\r
- return EFI_UNSUPPORTED;\r
- }\r
+ if (gRT == NULL) {\r
+ return EFI_UNSUPPORTED;\r
}\r
\r
- //\r
- // A Status Code Protocol is present in the handle database, so pass in all the \r
- // parameters to the ReportStatusCode() service of the Status Code Protocol\r
- //\r
- return (gStatusCode->ReportStatusCode) (Type, Value, Instance, (EFI_GUID *)CallerId, Data);\r
-\r
-#else\r
-\r
- return (gRT->ReportStatusCode) (Type, Value, Instance, (EFI_GUID *)CallerId, Data);\r
+ if (gRT->Hdr.Revision >= 0x00020000) {\r
+ //\r
+ // If gStatusCode is NULL, then see if a Status Code Protocol instance is present \r
+ // in the handle database.\r
+ //\r
+ if (gStatusCode == NULL) {\r
+ Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID **)&gStatusCode);\r
+ if (EFI_ERROR (Status) || gStatusCode == NULL) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+ }\r
\r
-#endif\r
+ //\r
+ // A Status Code Protocol is present in the handle database, so pass in all the \r
+ // parameters to the ReportStatusCode() service of the Status Code Protocol\r
+ //\r
+ return (gStatusCode->ReportStatusCode) (Type, Value, Instance, (EFI_GUID *)CallerId, Data);\r
+ } else {\r
+ return (gRT->ReportStatusCode) (Type, Value, Instance, (EFI_GUID *)CallerId, Data);\r
+ }\r
\r
}\r
\r