/** @file | |
This PRM Module demonstrates how to configure the module data resources in the firmware boot environment | |
and access those resources in a PRM handler at OS runtime. | |
Copyright (c) Microsoft Corporation | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#include <PrmModule.h> | |
#include <Library/BaseLib.h> | |
#include <Library/PrintLib.h> | |
#include <Library/UefiLib.h> | |
#include <Samples/PrmSampleContextBufferModule/Include/StaticData.h> | |
// | |
// PRM Handler GUIDs | |
// | |
// {e1466081-7562-430f-896b-b0e523dc335a} | |
#define CHECK_STATIC_DATA_BUFFER_PRM_HANDLER_GUID {0xe1466081, 0x7562, 0x430f, {0x89, 0x6b, 0xb0, 0xe5, 0x23, 0xdc, 0x33, 0x5a}} | |
/** | |
A sample Platform Runtime Mechanism (PRM) handler. | |
This sample handler checks that a static data buffer can be accessed from a given context buffer. | |
@param[in] ParameterBuffer A pointer to the PRM handler parameter buffer | |
@param[in] ContextBUffer A pointer to the PRM handler context buffer | |
@retval EFI_STATUS The PRM handler executed successfully. | |
@retval Others An error occurred in the PRM handler. | |
**/ | |
PRM_HANDLER_EXPORT (CheckStaticDataBufferPrmHandler) { | |
if (ContextBuffer == NULL) { | |
return EFI_INVALID_PARAMETER; | |
} | |
if (ContextBuffer->StaticDataBuffer == NULL) { | |
return EFI_INVALID_PARAMETER; | |
} | |
// | |
// Verify PRM data buffer signature is valid | |
// | |
if ( | |
(ContextBuffer->Signature != PRM_CONTEXT_BUFFER_SIGNATURE) || | |
(ContextBuffer->StaticDataBuffer->Header.Signature != PRM_DATA_BUFFER_HEADER_SIGNATURE)) | |
{ | |
return EFI_NOT_FOUND; | |
} | |
return EFI_SUCCESS; | |
} | |
// | |
// Register the PRM export information for this PRM Module | |
// | |
PRM_MODULE_EXPORT ( | |
PRM_HANDLER_EXPORT_ENTRY (CHECK_STATIC_DATA_BUFFER_PRM_HANDLER_GUID, CheckStaticDataBufferPrmHandler) | |
); | |
/** | |
Module entry point. | |
@param[in] ImageHandle The image handle. | |
@param[in] SystemTable A pointer to the system table. | |
@retval EFI_SUCCESS This function always returns success. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
PrmSampleContextBufferModuleInit ( | |
IN EFI_HANDLE ImageHandle, | |
IN EFI_SYSTEM_TABLE *SystemTable | |
) | |
{ | |
return EFI_SUCCESS; | |
} |