TianoCore EDK2 master
Loading...
Searching...
No Matches
Defer3rdPartyImageLoad.c File Reference

Go to the source code of this file.

Data Structures

struct  DEFERRED_3RD_PARTY_IMAGE_INFO
 
struct  DEFERRED_3RD_PARTY_IMAGE_TABLE
 

Functions

BOOLEAN FileFromFv (IN CONST EFI_DEVICE_PATH_PROTOCOL *File)
 
DEFERRED_3RD_PARTY_IMAGE_INFOLookupImage (IN CONST EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath, IN BOOLEAN BootOption)
 
VOID QueueImage (IN CONST EFI_DEVICE_PATH_PROTOCOL *ImageDevicePath, IN BOOLEAN BootOption)
 
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)
 
VOID EFIAPI EndOfDxe (IN EFI_EVENT Event, IN VOID *Context)
 
VOID EFIAPI DxeSmmReadyToLock (IN EFI_EVENT Event, IN VOID *Context)
 
EFI_STATUS Defer3rdPartyImageLoad (IN CONST EFI_DEVICE_PATH_PROTOCOL *File, IN BOOLEAN BootPolicy)
 
VOID Defer3rdPartyImageLoadInitialize (VOID)
 

Variables

BOOLEAN mImageLoadedAfterEndOfDxe = FALSE
 
BOOLEAN mEndOfDxe = FALSE
 
DEFERRED_3RD_PARTY_IMAGE_TABLE mDeferred3rdPartyImage
 
EFI_DEFERRED_IMAGE_LOAD_PROTOCOL mDeferredImageLoad
 

Detailed Description

Implement defer image load services for user identification in UEFI2.2.

Copyright (c) 2016, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file Defer3rdPartyImageLoad.c.

Function Documentation

◆ Defer3rdPartyImageLoad()

EFI_STATUS Defer3rdPartyImageLoad ( IN CONST EFI_DEVICE_PATH_PROTOCOL File,
IN BOOLEAN  BootPolicy 
)

Defer the 3rd party image load and installs Deferred Image Load Protocol.

Parameters
[in]FileThis is a pointer to the device path of the file that is being dispatched. This will optionally be used for logging.
[in]BootPolicyA boot policy that was used to call LoadImage() UEFI service.
Return values
EFI_SUCCESSThe file is not 3rd party image and can be loaded immediately.
EFI_ACCESS_DENIEDThe file is 3rd party image and needs deferred.

Definition at line 314 of file Defer3rdPartyImageLoad.c.

◆ Defer3rdPartyImageLoadInitialize()

VOID Defer3rdPartyImageLoadInitialize ( VOID  )

Installs DeferredImageLoad Protocol and listens EndOfDxe event.

Definition at line 379 of file Defer3rdPartyImageLoad.c.

◆ DxeSmmReadyToLock()

VOID EFIAPI DxeSmmReadyToLock ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

Event notification for gEfiDxeSmmReadyToLockProtocolGuid event.

This function reports failure if any deferred image is loaded before this callback. Platform should publish ReadyToLock protocol immediately after signaling of the End of DXE Event.

Parameters
EventThe Event that is being processed, not used.
ContextEvent Context, not used.

Definition at line 269 of file Defer3rdPartyImageLoad.c.

◆ EndOfDxe()

VOID EFIAPI EndOfDxe ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

Callback function executed when the EndOfDxe event group is signaled.

Parameters
[in]EventEvent whose notification function is being invoked.
[in]ContextThe pointer to the notification function's context, which is implementation-dependent.

Definition at line 247 of file Defer3rdPartyImageLoad.c.

◆ FileFromFv()

BOOLEAN FileFromFv ( IN CONST EFI_DEVICE_PATH_PROTOCOL File)

Return whether the file comes from FV.

Parameters
[in]FileThis is a pointer to the device path of the file that is being dispatched.
Return values
TRUEFile comes from FV.
FALSEFile doesn't come from FV.

Definition at line 48 of file Defer3rdPartyImageLoad.c.

◆ GetDefferedImageInfo()

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 
)

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.

Parameters
[in]ThisPoints to this instance of the EFI_DEFERRED_IMAGE_LOAD_PROTOCOL.
[in]ImageIndexZero-based index of the deferred index.
[out]ImageDevicePathOn return, points to a pointer to the device path of the image. The device path should not be freed by the caller.
[out]ImageOn 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.
[out]ImageSizeOn return, the size of the image, or 0 if the image is not available.
[out]BootOptionOn return, points to TRUE if the image was intended as a boot option or FALSE if it was not intended as a boot option.
Return values
EFI_SUCCESSImage information returned successfully.
EFI_NOT_FOUNDImageIndex does not refer to a valid image.
EFI_INVALID_PARAMETERImageDevicePath is NULL or Image is NULL or ImageSize is NULL or BootOption is NULL.

Definition at line 184 of file Defer3rdPartyImageLoad.c.

◆ LookupImage()

DEFERRED_3RD_PARTY_IMAGE_INFO * LookupImage ( IN CONST EFI_DEVICE_PATH_PROTOCOL ImageDevicePath,
IN BOOLEAN  BootOption 
)

Find the deferred image which matches the device path.

Parameters
[in]ImageDevicePathA pointer to the device path of a image.
[in]BootOptionWhether the image is a boot option.
Returns
Pointer to the found deferred image or NULL if not found.

Definition at line 92 of file Defer3rdPartyImageLoad.c.

◆ QueueImage()

VOID QueueImage ( IN CONST EFI_DEVICE_PATH_PROTOCOL ImageDevicePath,
IN BOOLEAN  BootOption 
)

Add the image info to a deferred image list.

Parameters
[in]ImageDevicePathA pointer to the device path of a image.
[in]BootOptionWhether the image is a boot option.

Definition at line 120 of file Defer3rdPartyImageLoad.c.

Variable Documentation

◆ mDeferred3rdPartyImage

DEFERRED_3RD_PARTY_IMAGE_TABLE mDeferred3rdPartyImage
Initial value:
= {
0,
}
#define NULL
Definition: Base.h:319

Definition at line 29 of file Defer3rdPartyImageLoad.c.

◆ mDeferredImageLoad

Initial value:
= {
}
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)

Definition at line 34 of file Defer3rdPartyImageLoad.c.

◆ mEndOfDxe

BOOLEAN mEndOfDxe = FALSE

The flag to indicate whether the platform has left the DXE phase of execution.

Definition at line 28 of file Defer3rdPartyImageLoad.c.

◆ mImageLoadedAfterEndOfDxe

BOOLEAN mImageLoadedAfterEndOfDxe = FALSE

Definition at line 27 of file Defer3rdPartyImageLoad.c.