2016-10-31 09:31:44 +01:00
|
|
|
/** @file
|
|
|
|
Implement defer image load services for user identification in UEFI2.2.
|
|
|
|
|
|
|
|
Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
|
|
|
|
This program and the accompanying materials
|
|
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
#ifndef _DEFER_3RD_PARTY_IMAGE_LOAD_H_
|
|
|
|
#define _DEFER_3RD_PARTY_IMAGE_LOAD_H_
|
|
|
|
|
2016-11-01 09:42:21 +01:00
|
|
|
#include <PiDxe.h>
|
2016-10-31 09:31:44 +01:00
|
|
|
#include <Guid/EventGroup.h>
|
|
|
|
#include <Protocol/DeferredImageLoad.h>
|
|
|
|
#include <Protocol/FirmwareVolume2.h>
|
2016-11-01 09:42:21 +01:00
|
|
|
#include <Protocol/DxeSmmReadyToLock.h>
|
2016-10-31 09:31:44 +01:00
|
|
|
|
|
|
|
#include <Library/UefiBootServicesTableLib.h>
|
|
|
|
#include <Library/BaseMemoryLib.h>
|
|
|
|
#include <Library/MemoryAllocationLib.h>
|
|
|
|
#include <Library/DevicePathLib.h>
|
|
|
|
#include <Library/DebugLib.h>
|
2016-11-01 09:42:21 +01:00
|
|
|
#include <Library/UefiLib.h>
|
|
|
|
#include <Library/ReportStatusCodeLib.h>
|
2016-10-31 09:31:44 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns information about a deferred image.
|
|
|
|
|
|
|
|
This function returns information about a single deferred image. The deferred images are
|
|
|
|
numbered consecutively, starting with 0. If there is no image which corresponds to
|
|
|
|
ImageIndex, then EFI_NOT_FOUND is returned. All deferred images may be returned by
|
|
|
|
iteratively calling this function until EFI_NOT_FOUND is returned.
|
|
|
|
Image may be NULL and ImageSize set to 0 if the decision to defer execution was made
|
|
|
|
because of the location of the executable image, rather than its actual contents.
|
|
|
|
|
|
|
|
@param[in] This Points to this instance of the EFI_DEFERRED_IMAGE_LOAD_PROTOCOL.
|
|
|
|
@param[in] ImageIndex Zero-based index of the deferred index.
|
|
|
|
@param[out] ImageDevicePath On return, points to a pointer to the device path of the image.
|
|
|
|
The device path should not be freed by the caller.
|
|
|
|
@param[out] Image On return, points to the first byte of the image or NULL if the
|
|
|
|
image is not available. The image should not be freed by the caller
|
|
|
|
unless LoadImage() has been successfully called.
|
|
|
|
@param[out] ImageSize On return, the size of the image, or 0 if the image is not available.
|
|
|
|
@param[out] BootOption On return, points to TRUE if the image was intended as a boot option
|
|
|
|
or FALSE if it was not intended as a boot option.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS Image information returned successfully.
|
|
|
|
@retval EFI_NOT_FOUND ImageIndex does not refer to a valid image.
|
|
|
|
@retval EFI_INVALID_PARAMETER ImageDevicePath is NULL or Image is NULL or ImageSize is NULL or
|
|
|
|
BootOption is NULL.
|
|
|
|
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
EFIAPI
|
|
|
|
GetDefferedImageInfo (
|
|
|
|
IN EFI_DEFERRED_IMAGE_LOAD_PROTOCOL *This,
|
|
|
|
IN UINTN ImageIndex,
|
|
|
|
OUT EFI_DEVICE_PATH_PROTOCOL **ImageDevicePath,
|
|
|
|
OUT VOID **Image,
|
|
|
|
OUT UINTN *ImageSize,
|
|
|
|
OUT BOOLEAN *BootOption
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Defer the 3rd party image load and installs Deferred Image Load Protocol.
|
|
|
|
|
|
|
|
@param[in] File This is a pointer to the device path of the file that
|
|
|
|
is being dispatched. This will optionally be used for
|
|
|
|
logging.
|
|
|
|
@param[in] BootPolicy A boot policy that was used to call LoadImage() UEFI service.
|
|
|
|
|
|
|
|
@retval EFI_SUCCESS The file is not 3rd party image and can be loaded immediately.
|
|
|
|
@retval EFI_ACCESS_DENIED The file is 3rd party image and needs deferred.
|
|
|
|
**/
|
|
|
|
EFI_STATUS
|
|
|
|
Defer3rdPartyImageLoad (
|
|
|
|
IN CONST EFI_DEVICE_PATH_PROTOCOL *File,
|
|
|
|
IN BOOLEAN BootPolicy
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Installs DeferredImageLoad Protocol and listens EndOfDxe event.
|
|
|
|
**/
|
|
|
|
VOID
|
|
|
|
Defer3rdPartyImageLoadInitialize (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
|
|
|
#endif
|