123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /** @file
- Fmp Capsule Dependency support functions for Firmware Management Protocol based
- firmware updates.
- Copyright (c) Microsoft Corporation.<BR>
- Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef __FMP_DEPENDENCY_LIB__
- #define __FMP_DEPENDENCY_LIB__
- #include <PiDxe.h>
- #include <Protocol/FirmwareManagement.h>
- //
- // Data struct to store FMP ImageType and version for dependency check.
- //
- typedef struct {
- EFI_GUID ImageTypeId;
- UINT32 Version;
- } FMP_DEPEX_CHECK_VERSION_DATA;
- /**
- Validate the dependency expression and output its size.
- @param[in] Dependencies Pointer to the EFI_FIRMWARE_IMAGE_DEP.
- @param[in] MaxDepexSize Max size of the dependency.
- @param[out] DepexSize Size of dependency.
- @param[out] LastAttemptStatus An optional pointer to a UINT32 that holds the
- last attempt status to report back to the caller.
- If a last attempt status error code is not returned,
- this function will not modify the LastAttemptStatus value.
- @retval TRUE The dependency expression is valid.
- @retval FALSE The dependency expression is invalid.
- **/
- BOOLEAN
- EFIAPI
- ValidateDependency (
- IN EFI_FIRMWARE_IMAGE_DEP *Dependencies,
- IN UINTN MaxDepexSize,
- OUT UINT32 *DepexSize,
- OUT UINT32 *LastAttemptStatus OPTIONAL
- );
- /**
- Get dependency from firmware image.
- @param[in] Image Points to the firmware image.
- @param[in] ImageSize Size, in bytes, of the firmware image.
- @param[out] DepexSize Size, in bytes, of the dependency.
- @param[out] LastAttemptStatus An optional pointer to a UINT32 that holds the
- last attempt status to report back to the caller.
- If a last attempt status error code is not returned,
- this function will not modify the LastAttemptStatus value.
- @retval The pointer to dependency.
- @retval Null
- **/
- EFI_FIRMWARE_IMAGE_DEP *
- EFIAPI
- GetImageDependency (
- IN EFI_FIRMWARE_IMAGE_AUTHENTICATION *Image,
- IN UINTN ImageSize,
- OUT UINT32 *DepexSize,
- OUT UINT32 *LastAttemptStatus OPTIONAL
- );
- /**
- Evaluate the dependencies. The caller must search all the Fmp instances and
- gather their versions into FmpVersions parameter. If there is PUSH_GUID opcode
- in dependency expression with no FmpVersions provided, the dependency will
- evaluate to FALSE.
- @param[in] Dependencies Dependency expressions.
- @param[in] DependenciesSize Size of Dependency expressions.
- @param[in] FmpVersions Array of Fmp ImageTypeId and version. This
- parameter is optional and can be set to NULL.
- @param[in] FmpVersionsCount Element count of the array. When FmpVersions
- is NULL, FmpVersionsCount must be 0.
- @param[out] LastAttemptStatus An optional pointer to a UINT32 that holds the
- last attempt status to report back to the caller.
- This function will set the value to LAST_ATTEMPT_STATUS_SUCCESS
- if an error code is not set.
- @retval TRUE Dependency expressions evaluate to TRUE.
- @retval FALSE Dependency expressions evaluate to FALSE.
- **/
- BOOLEAN
- EFIAPI
- EvaluateDependency (
- IN EFI_FIRMWARE_IMAGE_DEP *Dependencies,
- IN UINTN DependenciesSize,
- IN FMP_DEPEX_CHECK_VERSION_DATA *FmpVersions OPTIONAL,
- IN UINTN FmpVersionsCount,
- OUT UINT32 *LastAttemptStatus OPTIONAL
- );
- #endif
|