/* Initialize runtime Driver Lib if it has not yet been initialized. It will ASSERT() if gRT is NULL or gBS is NULL. It will ASSERT() if that operation fails. */
EFI_STATUS EFIAPI RuntimeDriverLibConstruct(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
/* Initialize runtime Driver Lib if it has not yet been initialized. It will ASSERT() if gRT is NULL or gBS is NULL. It will ASSERT() if that operation fails. */
EFI_STATUS EFIAPI RuntimeDriverLibConstruct(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
{
  EFI_STATUS  Status;
  ASSERT (gRT != NULL);
  ASSERT (gBS != NULL);
  mInternalRT = gRT;
  Status = gBS->CreateEvent (
                  EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE,
                  TPL_NOTIFY,
                  RuntimeLibVirtualNotifyEvent,
                  NULL,
                  &mEfiVirtualNotifyEvent
                  );
  ASSERT_EFI_ERROR (Status);
  Status = gBS->CreateEvent (
                  EVT_SIGNAL_EXIT_BOOT_SERVICES,
                  TPL_NOTIFY,
                  RuntimeLibExitBootServicesEvent,
                  NULL,
                  &mEfiExitBootServicesEvent
                  );
  ASSERT_EFI_ERROR (Status);
  return Status;
}