MdeModulePkg[all]  0.98
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
PlatformBootManager.h File Reference

Data Structures

struct  _EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL
 

Macros

#define EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_GUID
 
#define EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_REVISION   0x00000001
 

Typedefs

typedef struct
_EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL 
EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL
 
typedef IN CONST UINTN BootOptionsCount
 
typedef IN CONST UINTN OUT
EFI_BOOT_MANAGER_LOAD_OPTION ** 
UpdatedBootOptions
 
typedef IN CONST UINTN OUT
EFI_BOOT_MANAGER_LOAD_OPTION
OUT UINTN
UpdatedBootOptionsCount
 

Functions

typedef EFI_STATUS (EFIAPI *PLATFORM_BOOT_MANAGER_REFRESH_ALL_BOOT_OPTIONS)(IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *BootOptions
 

Variables

EFI_GUID gEdkiiPlatformBootManagerProtocolGuid
 

Detailed Description

Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.

SPDX-License-Identifier: BSD-2-Clause-Patent

Macro Definition Documentation

#define EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_GUID
Value:
{ \
0xaa17add4, 0x756c, 0x460d, { 0x94, 0xb8, 0x43, 0x88, 0xd7, 0xfb, 0x3e, 0x59 } \
}
#define EDKII_PLATFORM_BOOT_MANAGER_PROTOCOL_REVISION   0x00000001

Typedef Documentation

typedef IN CONST UINTN BootOptionsCount

Function Documentation

typedef EFI_STATUS ( EFIAPI *  PLATFORM_BOOT_MANAGER_REFRESH_ALL_BOOT_OPTIONS)

Perform device specific initialization before the device is started

Parameters
ThisThe non-discoverable device protocol pointer
Return values
EFI_SUCCESSInitialization successful, the device may be used
OtherInitialization failed, device should not be started

The security handler is used to abstracts security-specific functions from the DXE Foundation of UEFI Image Verification, Trusted Computing Group (TCG) measured boot, User Identity policy for image loading and consoles, and for purposes of handling GUIDed section encapsulations.

Parameters
[in]AuthenticationStatusThe authentication status for the input file.
[in]FileThe pointer to the device path of the file that is being dispatched. This will optionally be used for logging.
[in]FileBufferA pointer to the buffer with the UEFI file image
[in]FileSizeThe size of File buffer.
[in]BootPolicyA boot policy that was used to call LoadImage() UEFI service.
Return values
EFI_SUCCESSThe file specified by DevicePath and non-NULL FileBuffer did authenticate, and the platform policy dictates that the DXE Foundation may use the file.
EFI_SUCCESSThe device path specified by NULL device path DevicePath and non-NULL FileBuffer did authenticate, and the platform policy dictates that the DXE Foundation may execute the image in FileBuffer.
EFI_SUCCESSFileBuffer is NULL and current user has permission to start UEFI device drivers on the device path specified by DevicePath.
EFI_SECURITY_VIOLATIONThe file specified by DevicePath and FileBuffer did not authenticate, and the platform policy dictates that the file should be placed in the untrusted state. The image has been added to the file execution table.
EFI_ACCESS_DENIEDThe file specified by File and FileBuffer did not authenticate, and the platform policy dictates that the DXE Foundation may not use File.
EFI_SECURITY_VIOLATIONFileBuffer is NULL and the user has no permission to start UEFI device drivers on the device path specified by DevicePath.
EFI_SECURITY_VIOLATIONFileBuffer is not NULL and the user has no permission to load drivers from the device path specified by DevicePath. The image has been added into the list of the deferred images.

Finds next variable in storage blocks of volatile and non-volatile storage areas.

This code finds next variable in storage blocks of volatile and non-volatile storage areas. If VariableName is an empty string, then we just return the first qualified variable without comparing VariableName and VendorGuid.

Parameters
[in]VariableNameName of the variable to be found.
[in]VendorGuidVariable vendor GUID to be found.
[out]AuthVariableInfoPointer to AUTH_VARIABLE_INFO structure for output of the next variable.
Return values
EFI_INVALID_PARAMETERIf VariableName is not an empty string, while VendorGuid is NULL.
EFI_SUCCESSVariable successfully found.
EFI_NOT_FOUNDVariable not found

Update the variable region with Variable information.

Parameters
[in]AuthVariableInfoPointer AUTH_VARIABLE_INFO structure for input of the variable.
Return values
EFI_SUCCESSThe update operation is success.
EFI_INVALID_PARAMETERInvalid parameter.
EFI_WRITE_PROTECTEDVariable is write-protected.
EFI_OUT_OF_RESOURCESThere is not enough resource.

Get scratch buffer.

Parameters
[in,out]ScratchBufferSizeScratch buffer size. If input size is greater than the maximum supported buffer size, this value contains the maximum supported buffer size as output.
[out]ScratchBufferPointer to scratch buffer address.
Return values
EFI_SUCCESSGet scratch buffer successfully.
EFI_UNSUPPORTEDIf input size is greater than the maximum supported buffer size.

Sends an NVM Express Command Packet to an NVM Express controller or namespace. This function only supports blocking execution of the command.

Parameters
[in]ThisThe PPI instance pointer.
[in]NamespaceIdIs a 32 bit Namespace ID to which the Nvm Express command packet will be sent. A Value of 0 denotes the NVM Express controller, a Value of all 0FFh in the namespace ID specifies that the command packet should be sent to all valid namespaces.
[in,out]PacketA pointer to the EDKII PEI NVM Express PassThru Command Packet to send to the NVMe namespace specified by NamespaceId.
Return values
EFI_SUCCESSThe EDKII PEI NVM Express Command Packet was sent by the host. TransferLength bytes were transferred to, or from DataBuffer.
EFI_NOT_READYThe EDKII PEI NVM Express Command Packet could not be sent because the controller is not ready. The caller may retry again later.
EFI_DEVICE_ERRORA device error occurred while attempting to send the EDKII PEI NVM Express Command Packet.
EFI_INVALID_PARAMETERNamespace, or the contents of EDKII_PEI_NVM_EXPRESS_PASS_THRU_COMMAND_PACKET are invalid. The EDKII PEI NVM Express Command Packet was not sent, so no additional status information is available.
EFI_UNSUPPORTEDThe command described by the EDKII PEI NVM Express Command Packet is not supported by the host adapter. The EDKII PEI NVM Express Command Packet was not sent, so no additional status information is available.
EFI_TIMEOUTA timeout occurred while waiting for the EDKII PEI NVM Express Command Packet to execute.

Get the device path of NVM Express host controller.

Parameters
[in]ThisThe PPI instance pointer.
[in]ControllerIdThe ID of the NVM Express host controller.
[out]DevicePathLengthThe length of the device path in bytes specified by DevicePath.
[out]DevicePathThe device path of NVM Express host controller. This field re-uses EFI Device Path Protocol as defined by Section 10.2 EFI Device Path Protocol of UEFI 2.7 Specification.
Return values
EFI_SUCCESSThe operation succeeds.
EFI_INVALID_PARAMETERThe parameters are invalid.
EFI_NOT_FOUNDThe specified NVM Express host controller not found.
EFI_OUT_OF_RESOURCESThe operation fails due to lack of resources.

Get the device path of ATA AHCI host controller.

Parameters
[in]ThisThe PPI instance pointer.
[in]ControllerIdThe ID of the ATA AHCI host controller.
[out]DevicePathLengthThe length of the device path in bytes specified by DevicePath.
[out]DevicePathThe device path of ATA AHCI host controller. This field re-uses EFI Device Path Protocol as defined by Section 10.2 EFI Device Path Protocol of UEFI 2.7 Specification.
Return values
EFI_SUCCESSThe operation succeeds.
EFI_INVALID_PARAMETERThe parameters are invalid.
EFI_NOT_FOUNDThe specified ATA AHCI host controller not found.
EFI_OUT_OF_RESOURCESThe operation fails due to lack of resources.

Used to retrieve the list of legal port numbers for ATA devices on an ATA controller. These can either be the list of ports where ATA devices are actually present or the list of legal port numbers for the ATA controller. Regardless, the caller of this function must probe the port number returned to see if an ATA device is actually present at that location on the ATA controller.

The GetNextPort() function retrieves the port number on an ATA controller. If on input Port is 0xFFFF, then the port number of the first port on the ATA controller is returned in Port and EFI_SUCCESS is returned.

If Port is a port number that was returned on a previous call to GetNextPort(), then the port number of the next port on the ATA controller is returned in Port, and EFI_SUCCESS is returned. If Port is not 0xFFFF and Port was not returned on a previous call to GetNextPort(), then EFI_INVALID_PARAMETER is returned.

If Port is the port number of the last port on the ATA controller, then EFI_NOT_FOUND is returned.

Parameters
[in]ThisThe PPI instance pointer.
[in,out]PortOn input, a pointer to the port number on the ATA controller. On output, a pointer to the next port number on the ATA controller. An input value of 0xFFFF retrieves the first port number on the ATA controller.
Return values
EFI_SUCCESSThe next port number on the ATA controller was returned in Port.
EFI_NOT_FOUNDThere are no more ports on this ATA controller.
EFI_INVALID_PARAMETERPort is not 0xFFFF and Port was not returned on a previous call to GetNextPort().

Used to retrieve the list of legal port multiplier port numbers for ATA devices on a port of an ATA controller. These can either be the list of port multiplier ports where ATA devices are actually present on port or the list of legal port multiplier ports on that port. Regardless, the caller of this function must probe the port number and port multiplier port number returned to see if an ATA device is actually present.

The GetNextDevice() function retrieves the port multiplier port number of an ATA device present on a port of an ATA controller.

If PortMultiplierPort points to a port multiplier port number value that was returned on a previous call to GetNextDevice(), then the port multiplier port number of the next ATA device on the port of the ATA controller is returned in PortMultiplierPort, and EFI_SUCCESS is returned.

If PortMultiplierPort points to 0xFFFF, then the port multiplier port number of the first ATA device on port of the ATA controller is returned in PortMultiplierPort and EFI_SUCCESS is returned.

If PortMultiplierPort is not 0xFFFF and the value pointed to by PortMultiplierPort was not returned on a previous call to GetNextDevice(), then EFI_INVALID_PARAMETER is returned.

If PortMultiplierPort is the port multiplier port number of the last ATA device on the port of the ATA controller, then EFI_NOT_FOUND is returned.

Parameters
[in]ThisThe PPI instance pointer.
[in]PortThe port number present on the ATA controller.
[in,out]PortMultiplierPortOn input, a pointer to the port multiplier port number of an ATA device present on the ATA controller. If on input a PortMultiplierPort of 0xFFFF is specified, then the port multiplier port number of the first ATA device is returned. On output, a pointer to the port multiplier port number of the next ATA device present on an ATA controller.
Return values
EFI_SUCCESSThe port multiplier port number of the next ATA device on the port of the ATA controller was returned in PortMultiplierPort.
EFI_NOT_FOUNDThere are no more ATA devices on this port of the ATA controller.
EFI_INVALID_PARAMETERPortMultiplierPort is not 0xFFFF, and PortMultiplierPort was not returned on a previous call to GetNextDevice().

Gets the device path information of the underlying ATA host controller.

Parameters
[in]ThisThe PPI instance pointer.
[out]DevicePathLengthThe length of the device path in bytes specified by DevicePath.
[out]DevicePathThe device path of the underlying ATA host controller. This field re-uses EFI Device Path Protocol as defined by Section 10.2 EFI Device Path Protocol of UEFI 2.7 Specification.
Return values
EFI_SUCCESSThe device path of the ATA host controller has been successfully returned.
EFI_INVALID_PARAMETERDevicePathLength or DevicePath is NULL.
EFI_OUT_OF_RESOURCESNot enough resource to return the device path.

Gets the device path of a specific storage security device.

Parameters
[in]ThisThe PPI instance pointer.
[in]DeviceIndexSpecifies the storage security device to which the function wants to talk. Because the driver that implements Storage Security Command PPIs will manage multiple storage devices, the PPIs that want to talk to a single device must specify the device index that was assigned during the enumeration process. This index is a number from one to NumberofDevices.
[out]DevicePathLengthThe length of the device path in bytes specified by DevicePath.
[out]DevicePathThe device path of storage security device. This field re-uses EFI Device Path Protocol as defined by Section 10.2 EFI Device Path Protocol of UEFI 2.7 Specification.
Return values
EFI_SUCCESSThe operation succeeds.
EFI_INVALID_PARAMETERDevicePathLength or DevicePath is NULL.
EFI_NOT_FOUNDThe specified storage security device not found.
EFI_OUT_OF_RESOURCESThe operation fails due to lack of resources.

Send a security protocol command to a device that receives data and/or the result of one or more commands sent by SendData.

The ReceiveData function sends a security protocol command to the given DeviceIndex. The security protocol command sent is defined by SecurityProtocolId and contains the security protocol specific data SecurityProtocolSpecificData. The function returns the data from the security protocol command in PayloadBuffer.

For devices supporting the SCSI command set, the security protocol command is sent using the SECURITY PROTOCOL IN command defined in SPC-4.

For devices supporting the ATA command set, the security protocol command is sent using one of the TRUSTED RECEIVE commands defined in ATA8-ACS if PayloadBufferSize is non-zero.

If the PayloadBufferSize is zero, the security protocol command is sent using the Trusted Non-Data command defined in ATA8-ACS.

If PayloadBufferSize is too small to store the available data from the security protocol command, the function shall copy PayloadBufferSize bytes into the PayloadBuffer and return EFI_WARN_BUFFER_TOO_SMALL.

If PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero, the function shall return EFI_INVALID_PARAMETER.

If the given DeviceIndex does not support security protocol commands, the function shall return EFI_UNSUPPORTED.

If the security protocol fails to complete within the Timeout period, the function shall return EFI_TIMEOUT.

If the security protocol command completes without an error, the function shall return EFI_SUCCESS. If the security protocol command completes with an error, the function shall return EFI_DEVICE_ERROR.

Parameters
[in]ThisThe PPI instance pointer.
[in]DeviceIndexSpecifies the storage security device to which the function wants to talk. Because the driver that implements Storage Security Command PPIs will manage multiple storage devices, the PPIs that want to talk to a single device must specify the device index that was assigned during the enumeration process. This index is a number from one to NumberofDevices.
[in]TimeoutThe timeout, in 100ns units, to use for the execution of the security protocol command. A Timeout value of 0 means that this function will wait indefinitely for the security protocol command to execute. If Timeout is greater than zero, then this function will return EFI_TIMEOUT if the time required to execute the receive data command is greater than Timeout.
[in]SecurityProtocolIdThe value of the "Security Protocol" parameter of the security protocol command to be sent.
[in]SecurityProtocolSpecificDataThe value of the "Security Protocol Specific" parameter of the security protocol command to be sent.
[in]PayloadBufferSizeSize in bytes of the payload data buffer.
[out]PayloadBufferA pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. The caller is responsible for having either implicit or explicit ownership of the buffer.
[out]PayloadTransferSizeA pointer to a buffer to store the size in bytes of the data written to the payload data buffer.
Return values
EFI_SUCCESSThe security protocol command completed successfully.
EFI_WARN_BUFFER_TOO_SMALLThe PayloadBufferSize was too small to store the available data from the device. The PayloadBuffer contains the truncated data.
EFI_UNSUPPORTEDThe given DeviceIndex does not support security protocol commands.
EFI_DEVICE_ERRORThe security protocol command completed with an error.
EFI_INVALID_PARAMETERThe PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero.
EFI_TIMEOUTA timeout occurred while waiting for the security protocol command to execute.

Send a security protocol command to a device.

The SendData function sends a security protocol command containing the payload PayloadBuffer to the given DeviceIndex. The security protocol command sent is defined by SecurityProtocolId and contains the security protocol specific data SecurityProtocolSpecificData. If the underlying protocol command requires a specific padding for the command payload, the SendData function shall add padding bytes to the command payload to satisfy the padding requirements.

For devices supporting the SCSI command set, the security protocol command is sent using the SECURITY PROTOCOL OUT command defined in SPC-4.

For devices supporting the ATA command set, the security protocol command is sent using one of the TRUSTED SEND commands defined in ATA8-ACS if PayloadBufferSize is non-zero. If the PayloadBufferSize is zero, the security protocol command is sent using the Trusted Non-Data command defined in ATA8-ACS.

If PayloadBuffer is NULL and PayloadBufferSize is non-zero, the function shall return EFI_INVALID_PARAMETER.

If the given DeviceIndex does not support security protocol commands, the function shall return EFI_UNSUPPORTED.

If the security protocol fails to complete within the Timeout period, the function shall return EFI_TIMEOUT.

If the security protocol command completes without an error, the function shall return EFI_SUCCESS. If the security protocol command completes with an error, the functio shall return EFI_DEVICE_ERROR.

Parameters
[in]ThisThe PPI instance pointer.
[in]DeviceIndexThe ID of the device.
[in]TimeoutThe timeout, in 100ns units, to use for the execution of the security protocol command. A Timeout value of 0 means that this function will wait indefinitely for the security protocol command to execute. If Timeout is greater than zero, then this function will return EFI_TIMEOUT if the time required to execute the receive data command is greater than Timeout.
[in]SecurityProtocolIdThe value of the "Security Protocol" parameter of the security protocol command to be sent.
[in]SecurityProtocolSpecificDataThe value of the "Security Protocol Specific" parameter of the security protocol command to be sent.
[in]PayloadBufferSizeSize in bytes of the payload data buffer.
[in]PayloadBufferA pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command.
Return values
EFI_SUCCESSThe security protocol command completed successfully.
EFI_UNSUPPORTEDThe given DeviceIndex does not support security protocol commands.
EFI_DEVICE_ERRORThe security protocol command completed with an error.
EFI_INVALID_PARAMETERThe PayloadBuffer is NULL and PayloadBufferSize is non-zero.
EFI_TIMEOUTA timeout occurred while waiting for the security protocol command to execute.

Clears any system state that was created in response to the Active call.

Parameters
PeiServicesGeneral purpose services available to every PEIM.
ThisThe PEI_SMM_CONTROL_PPI instance.
PeriodicOptional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically.
Return values
EFI_SUCCESSThe SMI/PMI has been engendered.
EFI_DEVICE_ERRORThe source could not be cleared.
EFI_INVALID_PARAMETERThe service did not support the Periodic input argument.

This function is called by SmmChildDispatcher module to report an existing SMI handler is unregistered, to SmmCore.

Parameters
ThisThe protocol instance
HandlerGuidThe GUID to identify the type of the handler. For the SmmChildDispatch protocol, the HandlerGuid must be the GUID of SmmChildDispatch protocol.
HandlerThe SMI handler.
ContextThe context of the SMI handler. If it is NOT NULL, it will be used to check what is registered.
ContextSizeThe size of the context in bytes. If Context is NOT NULL, it will be used to check what is registered.
Return values
EFI_SUCCESSThe original record is removed.
EFI_NOT_FOUNDThere is no record for the HandlerGuid and handler.

Set memory profile recording state.

Parameters
[in]ThisThe EDKII_MEMORY_PROFILE_PROTOCOL instance.
[in]RecordingStateRecording state.
Returns
EFI_SUCCESS Set memory profile recording state successfully.
EFI_UNSUPPORTED Memory profile is unsupported.

Record memory profile of multilevel caller.

Parameters
[in]ThisThe EDKII_MEMORY_PROFILE_PROTOCOL instance.
[in]CallerAddressAddress of caller.
[in]ActionMemory profile action.
[in]MemoryTypeMemory type. EfiMaxMemoryType means the MemoryType is unknown.
[in]BufferBuffer address.
[in]SizeBuffer size.
[in]ActionStringString for memory profile action. Only needed for user defined allocate action.
Returns
EFI_SUCCESS Memory profile is updated.
EFI_UNSUPPORTED Memory profile is unsupported, or memory profile for the image is not required, or memory profile for the memory type is not required.
EFI_ACCESS_DENIED It is during memory profile data getting.
EFI_ABORTED Memory profile recording is not enabled.
EFI_OUT_OF_RESOURCES No enough resource to update memory profile for allocate action.
EFI_NOT_FOUND No matched allocate info found for free action.

Variable property set. Variable driver will do check according to the VariableProperty before really setting the variable into variable storage.

Parameters
[in]NamePointer to the variable name.
[in]GuidPointer to the vendor GUID.
[in]VariablePropertyPointer to the input variable property.
Return values
EFI_SUCCESSThe property of variable specified by the Name and Guid was set successfully.
EFI_INVALID_PARAMETERName, Guid or VariableProperty is NULL, or Name is an empty string, or the fields of VariableProperty are not valid.
EFI_ACCESS_DENIEDEFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled.
EFI_OUT_OF_RESOURCESThere is not enough resource for the variable property set request.

Variable property get.

Parameters
[in]NamePointer to the variable name.
[in]GuidPointer to the vendor GUID.
[out]VariablePropertyPointer to the output variable property.
Return values
EFI_SUCCESSThe property of variable specified by the Name and Guid was got successfully.
EFI_INVALID_PARAMETERName, Guid or VariableProperty is NULL, or Name is an empty string.
EFI_NOT_FOUNDThe property of variable specified by the Name and Guid was not found.

Allows platform protocol to override host controller information

Parameters
[in]ControllerHandleHandle of the UFS controller.
[in,out]HcInfoPointer EDKII_UFS_HC_INFO associated with host controller.
Return values
EFI_SUCCESSFunction completed successfully.
EFI_INVALID_PARAMETERHcInfo is NULL.
OthersFunction failed to complete.

Callback function for platform driver.

Parameters
[in]ControllerHandleHandle of the UFS controller.
[in]CallbackPhaseSpecifies when the platform protocol is called
[in,out]CallbackDataData specific to the callback phase. For PreHce and PostHce - EDKII_UFS_HC_DRIVER_INTERFACE. For PreLinkStartup and PostLinkStartup - EDKII_UFS_HC_DRIVER_INTERFACE.
Return values
EFI_SUCCESSOverride function completed successfully.
EFI_INVALID_PARAMETERCallbackPhase is invalid or CallbackData is NULL when phase expects valid data.
OthersFunction failed to complete.

Unregister a PE/COFF image that has been registered with the emulator. This should be done before the image is unloaded from memory.

Parameters
[in]ThisThis pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure
[in]ImageBaseThe base address in memory of the PE/COFF image
Return values
EFI_SUCCESSThe image was unregistered with the emulator.
otherImage could not be unloaded.

This interface allows you to configure the EBC debug support driver. For example, turn on or off saving and printing of delta VM even if called. Or to even disable the entire interface, in which case all functions become no-ops.

Parameters
[in]ThisA pointer to the EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL structure.
[in]ConfigIdID to be configured.
[in]ConfigValueValue to be set.
Return values
EFI_UNSUPPORTEDNo support for it.
EFI_SUCCESSConfigure EBC debug.

Override function for SDHCI controller operations

Parameters
[in]ControllerHandleThe EFI_HANDLE of the controller.
[in]SlotThe 0 based slot index.
[in]PhaseTypeThe type of operation and whether the hook is invoked right before (pre) or right after (post)
[in,out]PhaseDataThe pointer to a phase-specific data.
Return values
EFI_SUCCESSThe override function completed successfully.
EFI_NOT_FOUNDThe specified controller or slot does not exist.
EFI_INVALID_PARAMETERPhaseType is invalid

Register the hot key with its browser action, or unregistered the hot key. If the action value is zero, the hot key will be unregistered if it has been registered. If the same hot key has been registered, the new action and help string will override the previous ones.

Parameters
[in]KeyDataA pointer to a buffer that describes the keystroke information for the hot key. Its type is EFI_INPUT_KEY to be supported by all ConsoleIn devices.
[in]ActionAction value that describes what action will be trigged when the hot key is pressed.
[in]DefaultIdSpecifies the type of defaults to retrieve, which is only for DEFAULT action.
[in]HelpStringHelp string that describes the hot key information. Its value may be NULL for the unregistered hot key.
Return values
EFI_SUCCESSHot key is registered or unregistered.
EFI_INVALID_PARAMETERKeyData is NULL.

Convert AsmText to the instruction. This function is only used for test purposes.

Parameters
[in]ThisA pointer to the EFI_EBC_VM_TEST_PROTOCOL structure.
[in]AsmTextA pointer to EBC ASM text code.
[out]BufferBuffer to store the instruction.
[out]BufferLenSize of buffer that is required to store data.
Return values
EFI_UNSUPPORTEDThis functionality is unsupported.
EFI_SUCCESSSuccessfully convert AsmText to the instruction.

Dump the executed instruction. This function is only used for test purposes.

Parameters
[in]ThisA pointer to the EFI_EBC_VM_TEST_PROTOCOL structure.
[out]AsmTextContain the disasm text.
[out]BufferBuffer to store the instruction.
[out]BufferLenSize of buffer that is required to store data.
Return values
EFI_UNSUPPORTEDThis functionality is unsupported.
EFI_SUCCESSSuccessfully dump the executed instruction.

Display one form, and return user input.

Parameters
FormDataForm Data to be shown.
UserInputDataUser input data.
Return values
EFI_SUCCESSForm Data is shown, and user input is got.

Finds variable in storage blocks of volatile and non-volatile storage areas.

This code finds variable in storage blocks of volatile and non-volatile storage areas. If VariableName is an empty string, then we just return the first qualified variable without comparing VariableName and VendorGuid.

Parameters
[in]VariableNameName of the variable to be found.
[in]VendorGuidVariable vendor GUID to be found.
[out]AuthVariableInfoPointer to AUTH_VARIABLE_INFO structure for output of the variable found.
Return values
EFI_INVALID_PARAMETERIf VariableName is not an empty string, while VendorGuid is NULL.
EFI_SUCCESSVariable successfully found.
EFI_NOT_FOUNDVariable not found

Finds next variable in storage blocks of volatile and non-volatile storage areas.

This code finds next variable in storage blocks of volatile and non-volatile storage areas. If VariableName is an empty string, then we just return the first qualified variable without comparing VariableName and VendorGuid.

Parameters
[in]VariableNameName of the variable to be found.
[in]VendorGuidVariable vendor GUID to be found.
[out]AuthVariableInfoPointer to AUTH_VARIABLE_INFO structure for output of the next variable.
Return values
EFI_INVALID_PARAMETERIf VariableName is not an empty string, while VendorGuid is NULL.
EFI_SUCCESSVariable successfully found.
EFI_NOT_FOUNDVariable not found

Update the variable region with Variable information.

Parameters
[in]AuthVariableInfoPointer AUTH_VARIABLE_INFO structure for input of the variable.
Return values
EFI_SUCCESSThe update operation is success.
EFI_INVALID_PARAMETERInvalid parameter.
EFI_WRITE_PROTECTEDVariable is write-protected.
EFI_OUT_OF_RESOURCESThere is not enough resource.

Get scratch buffer.

Parameters
[in,out]ScratchBufferSizeScratch buffer size. If input size is greater than the maximum supported buffer size, this value contains the maximum supported buffer size as output.
[out]ScratchBufferPointer to scratch buffer address.
Return values
EFI_SUCCESSGet scratch buffer successfully.
EFI_UNSUPPORTEDIf input size is greater than the maximum supported buffer size.

This interface conveys performance information out of the Security (SEC) phase into PEI.

This service is published by the SEC phase. The SEC phase handoff has an optional EFI_PEI_PPI_DESCRIPTOR list as its final argument when control is passed from SEC into the PEI Foundation. As such, if the platform supports collecting performance data in SEC, this information is encapsulated into the data structure abstracted by this service. This information is collected for the boot-strap processor (BSP) on IA-32.

Parameters
[in]PeiServicesThe pointer to the PEI Services Table.
[in]ThisThe pointer to this instance of the PEI_SEC_PERFORMANCE_PPI.
[out]PerformanceThe pointer to performance data collected in SEC phase.
Return values
EFI_SUCCESSThe performance data was successfully returned.

Gets the device path information of the underlying NVM Express host controller.

Parameters
[in]ThisThe PPI instance pointer.
[out]DevicePathLengthThe length of the device path in bytes specified by DevicePath.
[out]DevicePathThe device path of the underlying NVM Express host controller. This field re-uses EFI Device Path Protocol as defined by Section 10.2 EFI Device Path Protocol of UEFI 2.7 Specification.
Return values
EFI_SUCCESSThe operation succeeds.
EFI_INVALID_PARAMETERDevicePathLength or DevicePath is NULL.
EFI_OUT_OF_RESOURCESThe operation fails due to lack of resources.

Sends an NVM Express Command Packet to an NVM Express controller or namespace. This function only supports blocking execution of the command.

Parameters
[in]ThisThe PPI instance pointer.
[in]NamespaceIdIs a 32 bit Namespace ID to which the Nvm Express command packet will be sent. A Value of 0 denotes the NVM Express controller, a Value of all 0FFh in the namespace ID specifies that the command packet should be sent to all valid namespaces.
[in,out]PacketA pointer to the EDKII PEI NVM Express PassThru Command Packet to send to the NVMe namespace specified by NamespaceId.
Return values
EFI_SUCCESSThe EDKII PEI NVM Express Command Packet was sent by the host. TransferLength bytes were transferred to, or from DataBuffer.
EFI_NOT_READYThe EDKII PEI NVM Express Command Packet could not be sent because the controller is not ready. The caller may retry again later.
EFI_DEVICE_ERRORA device error occurred while attempting to send the EDKII PEI NVM Express Command Packet.
EFI_INVALID_PARAMETERNamespace, or the contents of EDKII_PEI_NVM_EXPRESS_PASS_THRU_COMMAND_PACKET are invalid. The EDKII PEI NVM Express Command Packet was not sent, so no additional status information is available.
EFI_UNSUPPORTEDThe command described by the EDKII PEI NVM Express Command Packet is not supported by the host adapter. The EDKII PEI NVM Express Command Packet was not sent, so no additional status information is available.
EFI_TIMEOUTA timeout occurred while waiting for the EDKII PEI NVM Express Command Packet to execute.

Get the MMIO base address of NVM Express host controller.

Parameters
[in]ThisThe PPI instance pointer.
[in]ControllerIdThe ID of the NVM Express host controller.
[out]MmioBarThe MMIO base address of the controller.
Return values
EFI_SUCCESSThe operation succeeds.
EFI_INVALID_PARAMETERThe parameters are invalid.
EFI_NOT_FOUNDThe specified NVM Express host controller not found.

Get the device path of NVM Express host controller.

Parameters
[in]ThisThe PPI instance pointer.
[in]ControllerIdThe ID of the NVM Express host controller.
[out]DevicePathLengthThe length of the device path in bytes specified by DevicePath.
[out]DevicePathThe device path of NVM Express host controller. This field re-uses EFI Device Path Protocol as defined by Section 10.2 EFI Device Path Protocol of UEFI 2.7 Specification.
Return values
EFI_SUCCESSThe operation succeeds.
EFI_INVALID_PARAMETERThe parameters are invalid.
EFI_NOT_FOUNDThe specified NVM Express host controller not found.
EFI_OUT_OF_RESOURCESThe operation fails due to lack of resources.

Get the MMIO base address of ATA AHCI host controller.

Parameters
[in]ThisThe PPI instance pointer.
[in]ControllerIdThe ID of the ATA AHCI host controller.
[out]MmioBarThe MMIO base address of the controller.
Return values
EFI_SUCCESSThe operation succeeds.
EFI_INVALID_PARAMETERThe parameters are invalid.
EFI_NOT_FOUNDThe specified ATA AHCI host controller not found.

Get the device path of ATA AHCI host controller.

Parameters
[in]ThisThe PPI instance pointer.
[in]ControllerIdThe ID of the ATA AHCI host controller.
[out]DevicePathLengthThe length of the device path in bytes specified by DevicePath.
[out]DevicePathThe device path of ATA AHCI host controller. This field re-uses EFI Device Path Protocol as defined by Section 10.2 EFI Device Path Protocol of UEFI 2.7 Specification.
Return values
EFI_SUCCESSThe operation succeeds.
EFI_INVALID_PARAMETERThe parameters are invalid.
EFI_NOT_FOUNDThe specified ATA AHCI host controller not found.
EFI_OUT_OF_RESOURCESThe operation fails due to lack of resources.

Sends an ATA command to an ATA device that is attached to the ATA controller.

Parameters
[in]ThisThe PPI instance pointer.
[in]PortThe port number of the ATA device to send the command.
[in]PortMultiplierPortThe port multiplier port number of the ATA device to send the command. If there is no port multiplier, then specify 0xFFFF.
[in,out]PacketA pointer to the ATA command to send to the ATA device specified by Port and PortMultiplierPort.
Return values
EFI_SUCCESSThe ATA command was sent by the host. For bi-directional commands, InTransferLength bytes were transferred from InDataBuffer. For write and bi-directional commands, OutTransferLength bytes were transferred by OutDataBuffer.
EFI_NOT_FOUNDThe specified ATA device is not found.
EFI_INVALID_PARAMETERThe contents of Acb are invalid. The ATA command was not sent, so no additional status information is available.
EFI_BAD_BUFFER_SIZEThe ATA command was not executed. The number of bytes that could be transferred is returned in InTransferLength. For write and bi-directional commands, OutTransferLength bytes were transferred by OutDataBuffer.
EFI_NOT_READYThe ATA command could not be sent because there are too many ATA commands already queued. The caller may retry again later.
EFI_DEVICE_ERRORA device error occurred while attempting to send the ATA command.

Used to retrieve the list of legal port numbers for ATA devices on an ATA controller. These can either be the list of ports where ATA devices are actually present or the list of legal port numbers for the ATA controller. Regardless, the caller of this function must probe the port number returned to see if an ATA device is actually present at that location on the ATA controller.

The GetNextPort() function retrieves the port number on an ATA controller. If on input Port is 0xFFFF, then the port number of the first port on the ATA controller is returned in Port and EFI_SUCCESS is returned.

If Port is a port number that was returned on a previous call to GetNextPort(), then the port number of the next port on the ATA controller is returned in Port, and EFI_SUCCESS is returned. If Port is not 0xFFFF and Port was not returned on a previous call to GetNextPort(), then EFI_INVALID_PARAMETER is returned.

If Port is the port number of the last port on the ATA controller, then EFI_NOT_FOUND is returned.

Parameters
[in]ThisThe PPI instance pointer.
[in,out]PortOn input, a pointer to the port number on the ATA controller. On output, a pointer to the next port number on the ATA controller. An input value of 0xFFFF retrieves the first port number on the ATA controller.
Return values
EFI_SUCCESSThe next port number on the ATA controller was returned in Port.
EFI_NOT_FOUNDThere are no more ports on this ATA controller.
EFI_INVALID_PARAMETERPort is not 0xFFFF and Port was not returned on a previous call to GetNextPort().

Used to retrieve the list of legal port multiplier port numbers for ATA devices on a port of an ATA controller. These can either be the list of port multiplier ports where ATA devices are actually present on port or the list of legal port multiplier ports on that port. Regardless, the caller of this function must probe the port number and port multiplier port number returned to see if an ATA device is actually present.

The GetNextDevice() function retrieves the port multiplier port number of an ATA device present on a port of an ATA controller.

If PortMultiplierPort points to a port multiplier port number value that was returned on a previous call to GetNextDevice(), then the port multiplier port number of the next ATA device on the port of the ATA controller is returned in PortMultiplierPort, and EFI_SUCCESS is returned.

If PortMultiplierPort points to 0xFFFF, then the port multiplier port number of the first ATA device on port of the ATA controller is returned in PortMultiplierPort and EFI_SUCCESS is returned.

If PortMultiplierPort is not 0xFFFF and the value pointed to by PortMultiplierPort was not returned on a previous call to GetNextDevice(), then EFI_INVALID_PARAMETER is returned.

If PortMultiplierPort is the port multiplier port number of the last ATA device on the port of the ATA controller, then EFI_NOT_FOUND is returned.

Parameters
[in]ThisThe PPI instance pointer.
[in]PortThe port number present on the ATA controller.
[in,out]PortMultiplierPortOn input, a pointer to the port multiplier port number of an ATA device present on the ATA controller. If on input a PortMultiplierPort of 0xFFFF is specified, then the port multiplier port number of the first ATA device is returned. On output, a pointer to the port multiplier port number of the next ATA device present on an ATA controller.
Return values
EFI_SUCCESSThe port multiplier port number of the next ATA device on the port of the ATA controller was returned in PortMultiplierPort.
EFI_NOT_FOUNDThere are no more ATA devices on this port of the ATA controller.
EFI_INVALID_PARAMETERPortMultiplierPort is not 0xFFFF, and PortMultiplierPort was not returned on a previous call to GetNextDevice().

Gets the device path information of the underlying ATA host controller.

Parameters
[in]ThisThe PPI instance pointer.
[out]DevicePathLengthThe length of the device path in bytes specified by DevicePath.
[out]DevicePathThe device path of the underlying ATA host controller. This field re-uses EFI Device Path Protocol as defined by Section 10.2 EFI Device Path Protocol of UEFI 2.7 Specification.
Return values
EFI_SUCCESSThe device path of the ATA host controller has been successfully returned.
EFI_INVALID_PARAMETERDevicePathLength or DevicePath is NULL.
EFI_OUT_OF_RESOURCESNot enough resource to return the device path.

This service enables submitting commands via Ipmi.

Parameters
[in]ThisThis point for PEI_IPMI_PPI structure.
[in]NetFunctionNet function of the command.
[in]CommandIPMI Command.
[in]RequestDataCommand Request Data.
[in]RequestDataSizeSize of Command Request Data.
[out]ResponseDataCommand Response Data. The completion code is the first byte of response data.
[in,out]ResponseDataSizeSize of Command Response Data.
Return values
EFI_SUCCESSThe command byte stream was successfully submit to the device and a response was successfully received.
EFI_NOT_FOUNDThe command was not successfully sent to the device or a response was not successfully received from the device.
EFI_NOT_READYIpmi Device is not ready for Ipmi command access.
EFI_DEVICE_ERRORIpmi Device hardware error.
EFI_TIMEOUTThe command time out.
EFI_UNSUPPORTEDThe command was not successfully sent to the device.
EFI_OUT_OF_RESOURCESThe resource allcation is out of resource or data size error.

Gets the count of storage security devices that one specific driver detects.

Parameters
[in]ThisThe PPI instance pointer.
[out]NumberofDevicesThe number of storage security devices discovered.
Return values
EFI_SUCCESSThe operation performed successfully.
EFI_INVALID_PARAMETERThe parameters are invalid.

Gets the device path of a specific storage security device.

Parameters
[in]ThisThe PPI instance pointer.
[in]DeviceIndexSpecifies the storage security device to which the function wants to talk. Because the driver that implements Storage Security Command PPIs will manage multiple storage devices, the PPIs that want to talk to a single device must specify the device index that was assigned during the enumeration process. This index is a number from one to NumberofDevices.
[out]DevicePathLengthThe length of the device path in bytes specified by DevicePath.
[out]DevicePathThe device path of storage security device. This field re-uses EFI Device Path Protocol as defined by Section 10.2 EFI Device Path Protocol of UEFI 2.7 Specification.
Return values
EFI_SUCCESSThe operation succeeds.
EFI_INVALID_PARAMETERDevicePathLength or DevicePath is NULL.
EFI_NOT_FOUNDThe specified storage security device not found.
EFI_OUT_OF_RESOURCESThe operation fails due to lack of resources.

Send a security protocol command to a device that receives data and/or the result of one or more commands sent by SendData.

The ReceiveData function sends a security protocol command to the given DeviceIndex. The security protocol command sent is defined by SecurityProtocolId and contains the security protocol specific data SecurityProtocolSpecificData. The function returns the data from the security protocol command in PayloadBuffer.

For devices supporting the SCSI command set, the security protocol command is sent using the SECURITY PROTOCOL IN command defined in SPC-4.

For devices supporting the ATA command set, the security protocol command is sent using one of the TRUSTED RECEIVE commands defined in ATA8-ACS if PayloadBufferSize is non-zero.

If the PayloadBufferSize is zero, the security protocol command is sent using the Trusted Non-Data command defined in ATA8-ACS.

If PayloadBufferSize is too small to store the available data from the security protocol command, the function shall copy PayloadBufferSize bytes into the PayloadBuffer and return EFI_WARN_BUFFER_TOO_SMALL.

If PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero, the function shall return EFI_INVALID_PARAMETER.

If the given DeviceIndex does not support security protocol commands, the function shall return EFI_UNSUPPORTED.

If the security protocol fails to complete within the Timeout period, the function shall return EFI_TIMEOUT.

If the security protocol command completes without an error, the function shall return EFI_SUCCESS. If the security protocol command completes with an error, the function shall return EFI_DEVICE_ERROR.

Parameters
[in]ThisThe PPI instance pointer.
[in]DeviceIndexSpecifies the storage security device to which the function wants to talk. Because the driver that implements Storage Security Command PPIs will manage multiple storage devices, the PPIs that want to talk to a single device must specify the device index that was assigned during the enumeration process. This index is a number from one to NumberofDevices.
[in]TimeoutThe timeout, in 100ns units, to use for the execution of the security protocol command. A Timeout value of 0 means that this function will wait indefinitely for the security protocol command to execute. If Timeout is greater than zero, then this function will return EFI_TIMEOUT if the time required to execute the receive data command is greater than Timeout.
[in]SecurityProtocolIdThe value of the "Security Protocol" parameter of the security protocol command to be sent.
[in]SecurityProtocolSpecificDataThe value of the "Security Protocol Specific" parameter of the security protocol command to be sent.
[in]PayloadBufferSizeSize in bytes of the payload data buffer.
[out]PayloadBufferA pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. The caller is responsible for having either implicit or explicit ownership of the buffer.
[out]PayloadTransferSizeA pointer to a buffer to store the size in bytes of the data written to the payload data buffer.
Return values
EFI_SUCCESSThe security protocol command completed successfully.
EFI_WARN_BUFFER_TOO_SMALLThe PayloadBufferSize was too small to store the available data from the device. The PayloadBuffer contains the truncated data.
EFI_UNSUPPORTEDThe given DeviceIndex does not support security protocol commands.
EFI_DEVICE_ERRORThe security protocol command completed with an error.
EFI_INVALID_PARAMETERThe PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero.
EFI_TIMEOUTA timeout occurred while waiting for the security protocol command to execute.

Send a security protocol command to a device.

The SendData function sends a security protocol command containing the payload PayloadBuffer to the given DeviceIndex. The security protocol command sent is defined by SecurityProtocolId and contains the security protocol specific data SecurityProtocolSpecificData. If the underlying protocol command requires a specific padding for the command payload, the SendData function shall add padding bytes to the command payload to satisfy the padding requirements.

For devices supporting the SCSI command set, the security protocol command is sent using the SECURITY PROTOCOL OUT command defined in SPC-4.

For devices supporting the ATA command set, the security protocol command is sent using one of the TRUSTED SEND commands defined in ATA8-ACS if PayloadBufferSize is non-zero. If the PayloadBufferSize is zero, the security protocol command is sent using the Trusted Non-Data command defined in ATA8-ACS.

If PayloadBuffer is NULL and PayloadBufferSize is non-zero, the function shall return EFI_INVALID_PARAMETER.

If the given DeviceIndex does not support security protocol commands, the function shall return EFI_UNSUPPORTED.

If the security protocol fails to complete within the Timeout period, the function shall return EFI_TIMEOUT.

If the security protocol command completes without an error, the function shall return EFI_SUCCESS. If the security protocol command completes with an error, the functio shall return EFI_DEVICE_ERROR.

Parameters
[in]ThisThe PPI instance pointer.
[in]DeviceIndexThe ID of the device.
[in]TimeoutThe timeout, in 100ns units, to use for the execution of the security protocol command. A Timeout value of 0 means that this function will wait indefinitely for the security protocol command to execute. If Timeout is greater than zero, then this function will return EFI_TIMEOUT if the time required to execute the receive data command is greater than Timeout.
[in]SecurityProtocolIdThe value of the "Security Protocol" parameter of the security protocol command to be sent.
[in]SecurityProtocolSpecificDataThe value of the "Security Protocol Specific" parameter of the security protocol command to be sent.
[in]PayloadBufferSizeSize in bytes of the payload data buffer.
[in]PayloadBufferA pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command.
Return values
EFI_SUCCESSThe security protocol command completed successfully.
EFI_UNSUPPORTEDThe given DeviceIndex does not support security protocol commands.
EFI_DEVICE_ERRORThe security protocol command completed with an error.
EFI_INVALID_PARAMETERThe PayloadBuffer is NULL and PayloadBufferSize is non-zero.
EFI_TIMEOUTA timeout occurred while waiting for the security protocol command to execute.

Invokes SMI activation from either the preboot or runtime environment.

Parameters
PeiServicesGeneral purpose services available to every PEIM.
ThisThe PEI_SMM_CONTROL_PPI instance.
ArgumentBufferThe optional sized data to pass into the protocol activation.
ArgumentBufferSizeThe optional size of the data.
PeriodicAn optional mechanism to periodically repeat activation.
ActivationIntervalAn optional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically.
Return values
EFI_SUCCESSThe SMI/PMI has been engendered.
EFI_DEVICE_ERRORThe timing is unsupported.
EFI_INVALID_PARAMETERThe activation period is unsupported.
EFI_NOT_STARTEDThe SMM base service has not been initialized.

Clears any system state that was created in response to the Active call.

Parameters
PeiServicesGeneral purpose services available to every PEIM.
ThisThe PEI_SMM_CONTROL_PPI instance.
PeriodicOptional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically.
Return values
EFI_SUCCESSThe SMI/PMI has been engendered.
EFI_DEVICE_ERRORThe source could not be cleared.
EFI_INVALID_PARAMETERThe service did not support the Periodic input argument.

This function is called by SmmChildDispatcher module to report a new SMI handler is registered, to SmmCore.

Parameters
ThisThe protocol instance
HandlerGuidThe GUID to identify the type of the handler. For the SmmChildDispatch protocol, the HandlerGuid must be the GUID of SmmChildDispatch protocol.
HandlerThe SMI handler.
CallerAddressThe address of the module who registers the SMI handler.
ContextThe context of the SMI handler. For the SmmChildDispatch protocol, the Context must match the one defined for SmmChildDispatch protocol.
ContextSizeThe size of the context in bytes. For the SmmChildDispatch protocol, the Context must match the one defined for SmmChildDispatch protocol.
Return values
EFI_SUCCESSThe information is recorded.
EFI_OUT_OF_RESOURCESThere is no enough resource to record the information.

This function is called by SmmChildDispatcher module to report an existing SMI handler is unregistered, to SmmCore.

Parameters
ThisThe protocol instance
HandlerGuidThe GUID to identify the type of the handler. For the SmmChildDispatch protocol, the HandlerGuid must be the GUID of SmmChildDispatch protocol.
HandlerThe SMI handler.
ContextThe context of the SMI handler. If it is NOT NULL, it will be used to check what is registered.
ContextSizeThe size of the context in bytes. If Context is NOT NULL, it will be used to check what is registered.
Return values
EFI_SUCCESSThe original record is removed.
EFI_NOT_FOUNDThere is no record for the HandlerGuid and handler.

Get memory profile recording state.

Parameters
[in]ThisThe EDKII_MEMORY_PROFILE_PROTOCOL instance.
[out]RecordingStateRecording state.
Returns
EFI_SUCCESS Memory profile recording state is returned.
EFI_UNSUPPORTED Memory profile is unsupported.
EFI_INVALID_PARAMETER RecordingState is NULL.

Set memory profile recording state.

Parameters
[in]ThisThe EDKII_MEMORY_PROFILE_PROTOCOL instance.
[in]RecordingStateRecording state.
Returns
EFI_SUCCESS Set memory profile recording state successfully.
EFI_UNSUPPORTED Memory profile is unsupported.

Record memory profile of multilevel caller.

Parameters
[in]ThisThe EDKII_MEMORY_PROFILE_PROTOCOL instance.
[in]CallerAddressAddress of caller.
[in]ActionMemory profile action.
[in]MemoryTypeMemory type. EfiMaxMemoryType means the MemoryType is unknown.
[in]BufferBuffer address.
[in]SizeBuffer size.
[in]ActionStringString for memory profile action. Only needed for user defined allocate action.
Returns
EFI_SUCCESS Memory profile is updated.
EFI_UNSUPPORTED Memory profile is unsupported, or memory profile for the image is not required, or memory profile for the memory type is not required.
EFI_ACCESS_DENIED It is during memory profile data getting.
EFI_ABORTED Memory profile recording is not enabled.
EFI_OUT_OF_RESOURCES No enough resource to update memory profile for allocate action.
EFI_NOT_FOUND No matched allocate info found for free action.

Register SetVariable check handler. Variable driver will call the handler to do check before really setting the variable into variable storage.

Parameters
[in]HandlerPointer to the check handler.
Return values
EFI_SUCCESSThe SetVariable check handler was registered successfully.
EFI_INVALID_PARAMETERHandler is NULL.
EFI_ACCESS_DENIEDEFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled.
EFI_OUT_OF_RESOURCESThere is not enough resource for the SetVariable check handler register request.
EFI_UNSUPPORTEDThis interface is not implemented. For example, it is unsupported in VarCheck protocol if both VarCheck and SmmVarCheck protocols are present.

Variable property set. Variable driver will do check according to the VariableProperty before really setting the variable into variable storage.

Parameters
[in]NamePointer to the variable name.
[in]GuidPointer to the vendor GUID.
[in]VariablePropertyPointer to the input variable property.
Return values
EFI_SUCCESSThe property of variable specified by the Name and Guid was set successfully.
EFI_INVALID_PARAMETERName, Guid or VariableProperty is NULL, or Name is an empty string, or the fields of VariableProperty are not valid.
EFI_ACCESS_DENIEDEFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled.
EFI_OUT_OF_RESOURCESThere is not enough resource for the variable property set request.

Variable property get.

Parameters
[in]NamePointer to the variable name.
[in]GuidPointer to the vendor GUID.
[out]VariablePropertyPointer to the output variable property.
Return values
EFI_SUCCESSThe property of variable specified by the Name and Guid was got successfully.
EFI_INVALID_PARAMETERName, Guid or VariableProperty is NULL, or Name is an empty string.
EFI_NOT_FOUNDThe property of variable specified by the Name and Guid was not found.

This service enables submitting commands via Ipmi.

Parameters
[in]ThisThis point for IPMI_PROTOCOL structure.
[in]NetFunctionNet function of the command.
[in]CommandIPMI Command.
[in]RequestDataCommand Request Data.
[in]RequestDataSizeSize of Command Request Data.
[out]ResponseDataCommand Response Data. The completion code is the first byte of response data.
[in,out]ResponseDataSizeSize of Command Response Data.
Return values
EFI_SUCCESSThe command byte stream was successfully submit to the device and a response was successfully received.
EFI_NOT_FOUNDThe command was not successfully sent to the device or a response was not successfully received from the device.
EFI_NOT_READYIpmi Device is not ready for Ipmi command access.
EFI_DEVICE_ERRORIpmi Device hardware error.
EFI_TIMEOUTThe command time out.
EFI_UNSUPPORTEDThe command was not successfully sent to the device.
EFI_OUT_OF_RESOURCESThe resource allcation is out of resource or data size error.

Execute UIC command

Parameters
[in]ThisPointer to driver interface produced by the UFS controller.
[in,out]UicCommandDescriptor of the command that will be executed.
Return values
EFI_SUCCESSCommand executed successfully.
EFI_INVALID_PARAMETERThis or UicCommand is NULL.
OthersCommand failed to execute.

Allows platform protocol to override host controller information

Parameters
[in]ControllerHandleHandle of the UFS controller.
[in,out]HcInfoPointer EDKII_UFS_HC_INFO associated with host controller.
Return values
EFI_SUCCESSFunction completed successfully.
EFI_INVALID_PARAMETERHcInfo is NULL.
OthersFunction failed to complete.

Callback function for platform driver.

Parameters
[in]ControllerHandleHandle of the UFS controller.
[in]CallbackPhaseSpecifies when the platform protocol is called
[in,out]CallbackDataData specific to the callback phase. For PreHce and PostHce - EDKII_UFS_HC_DRIVER_INTERFACE. For PreLinkStartup and PostLinkStartup - EDKII_UFS_HC_DRIVER_INTERFACE.
Return values
EFI_SUCCESSOverride function completed successfully.
EFI_INVALID_PARAMETERCallbackPhase is invalid or CallbackData is NULL when phase expects valid data.
OthersFunction failed to complete.

Register a supported PE/COFF image with the emulator. After this call completes successfully, the PE/COFF image may be started as usual, and it is the responsibility of the emulator implementation that any branch into the code section of the image (including returns from functions called from the foreign code) is executed as if it were running on the machine type it was built for.

Parameters
[in]ThisThis pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure
[in]ImageBaseThe base address in memory of the PE/COFF image
[in]ImageSizeThe size in memory of the PE/COFF image
[in,out]EntryPointThe entry point of the PE/COFF image. Passed by reference so that the emulator may modify it.
Return values
EFI_SUCCESSThe image was registered with the emulator and can be started as usual.
otherThe image could not be registered.

If the PE/COFF machine type or image type are not supported by the emulator, then ASSERT().

Unregister a PE/COFF image that has been registered with the emulator. This should be done before the image is unloaded from memory.

Parameters
[in]ThisThis pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure
[in]ImageBaseThe base address in memory of the PE/COFF image
Return values
EFI_SUCCESSThe image was unregistered with the emulator.
otherImage could not be unloaded.

Trig Exception on EBC VM.

Parameters
[in]ThisA pointer to the EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL structure.
[in]VmPtrA pointer to a VM context.
[in]ExceptionTypeException to be trigged.
Return values
EFI_UNSUPPORTEDNo support for it.
EFI_SUCCESSException is trigged.

This interface allows you to configure the EBC debug support driver. For example, turn on or off saving and printing of delta VM even if called. Or to even disable the entire interface, in which case all functions become no-ops.

Parameters
[in]ThisA pointer to the EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL structure.
[in]ConfigIdID to be configured.
[in]ConfigValueValue to be set.
Return values
EFI_UNSUPPORTEDNo support for it.
EFI_SUCCESSConfigure EBC debug.

Choose a file in the specified directory.

If user input NULL for the RootDirectory, will choose file in the system.

If user input *File != NULL, function will return the allocate device path info for the choosed file, caller has to free the memory after use it.

Parameters
RootDirectoryPointer to the root directory.
FileTypeThe file type need to choose.
ChooseHandlerFunction pointer to the extra task need to do after choose one file.
FileReturn the device path for the last time chosed file.
Return values
EFI_SUCESSChoose the file success.
Othererrors Choose the file failed.

Execute the action requested by the Action parameter.

Parameters
[in]ActionExecute the request action.
[in]DefaultIdThe default Id info when need to load default value.
Return values
EFI_SUCCESSExecute the request action succss.

Override function for SDHCI capability bits

Parameters
[in]ControllerHandleThe EFI_HANDLE of the controller.
[in]SlotThe 0 based slot index.
[in,out]SdMmcHcSlotCapabilityThe SDHCI capability structure.
[in,out]BaseClkFreqThe base clock frequency value that optionally can be updated.
Return values
EFI_SUCCESSThe override function completed successfully.
EFI_NOT_FOUNDThe specified controller or slot does not exist.
EFI_INVALID_PARAMETERSdMmcHcSlotCapability is NULL

Override function for SDHCI controller operations

Parameters
[in]ControllerHandleThe EFI_HANDLE of the controller.
[in]SlotThe 0 based slot index.
[in]PhaseTypeThe type of operation and whether the hook is invoked right before (pre) or right after (post)
[in,out]PhaseDataThe pointer to a phase-specific data.
Return values
EFI_SUCCESSThe override function completed successfully.
EFI_NOT_FOUNDThe specified controller or slot does not exist.
EFI_INVALID_PARAMETERPhaseType is invalid

Mark a variable that will become read-only after leaving the DXE phase of execution. Write request coming from SMM environment through EFI_SMM_VARIABLE_PROTOCOL is allowed.

Parameters
[in]ThisThe EDKII_VARIABLE_LOCK_PROTOCOL instance.
[in]VariableNameA pointer to the variable name that will be made read-only subsequently.
[in]VendorGuidA pointer to the vendor GUID that will be made read-only subsequently.
Return values
EFI_SUCCESSThe variable specified by the VariableName and the VendorGuid was marked as pending to be read-only.
EFI_INVALID_PARAMETERVariableName or VendorGuid is NULL. Or VariableName is an empty string.
EFI_ACCESS_DENIEDEFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled.
EFI_OUT_OF_RESOURCESThere is not enough resource to hold the lock request.

Configure what scope the hot key will impact. All hot keys have the same scope. The mixed hot keys with the different level are not supported. If no scope is set, the default scope will be FormSet level. After all registered hot keys are removed, previous Scope can reset to another level.

Parameters
[in]ScopeScope level to be set.
Return values
EFI_SUCCESSScope is set correctly.
EFI_INVALID_PARAMETERScope is not the valid value specified in BROWSER_SETTING_SCOPE.
EFI_UNSPPORTEDScope level is different from current one that the registered hot keys have.

Register the hot key with its browser action, or unregistered the hot key. If the action value is zero, the hot key will be unregistered if it has been registered. If the same hot key has been registered, the new action and help string will override the previous ones.

Parameters
[in]KeyDataA pointer to a buffer that describes the keystroke information for the hot key. Its type is EFI_INPUT_KEY to be supported by all ConsoleIn devices.
[in]ActionAction value that describes what action will be trigged when the hot key is pressed.
[in]DefaultIdSpecifies the type of defaults to retrieve, which is only for DEFAULT action.
[in]HelpStringHelp string that describes the hot key information. Its value may be NULL for the unregistered hot key.
Return values
EFI_SUCCESSHot key is registered or unregistered.
EFI_INVALID_PARAMETERKeyData is NULL.

Given a pointer to a new VM context, execute one or more instructions. This function is only used for test purposes.

Parameters
[in]ThisA pointer to the EFI_EBC_VM_TEST_PROTOCOL structure.
[in]VmPtrA pointer to a VM context.
[in,out]InstructionCountA pointer to a UINTN value holding the number of instructions to execute. If it holds value of 0, then the instruction to be executed is 1.
Return values
EFI_UNSUPPORTEDAt least one of the opcodes is not supported.
EFI_SUCCESSAll of the instructions are executed successfully.

Convert AsmText to the instruction. This function is only used for test purposes.

Parameters
[in]ThisA pointer to the EFI_EBC_VM_TEST_PROTOCOL structure.
[in]AsmTextA pointer to EBC ASM text code.
[out]BufferBuffer to store the instruction.
[out]BufferLenSize of buffer that is required to store data.
Return values
EFI_UNSUPPORTEDThis functionality is unsupported.
EFI_SUCCESSSuccessfully convert AsmText to the instruction.

Dump the executed instruction. This function is only used for test purposes.

Parameters
[in]ThisA pointer to the EFI_EBC_VM_TEST_PROTOCOL structure.
[out]AsmTextContain the disasm text.
[out]BufferBuffer to store the instruction.
[out]BufferLenSize of buffer that is required to store data.
Return values
EFI_UNSUPPORTEDThis functionality is unsupported.
EFI_SUCCESSSuccessfully dump the executed instruction.

Perform Password check. Passwork may be encrypted by driver that requires the specific check.

Parameters
FormForm where Password Statement is in.
StatementPassword statement
PasswordStringPassword string to be checked. It may be NULL. NULL means to restore password. "" string can be used to checked whether old password does exist.
Returns
Status Status of Password check.

Display one form, and return user input.

Parameters
FormDataForm Data to be shown.
UserInputDataUser input data.
Return values
EFI_SUCCESSForm Data is shown, and user input is got.

Variable Documentation

EFI_GUID gEdkiiPlatformBootManagerProtocolGuid