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] | AuthenticationStatus | The authentication status for the input file. |
[in] | File | The pointer to the device path of the file that is being dispatched. This will optionally be used for logging. |
[in] | FileBuffer | A pointer to the buffer with the UEFI file image |
[in] | FileSize | The size of File buffer. |
[in] | BootPolicy | A boot policy that was used to call LoadImage() UEFI service. |
- Return values
-
EFI_SUCCESS | The file specified by DevicePath and non-NULL FileBuffer did authenticate, and the platform policy dictates that the DXE Foundation may use the file. |
EFI_SUCCESS | The 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_SUCCESS | FileBuffer is NULL and current user has permission to start UEFI device drivers on the device path specified by DevicePath. |
EFI_SECURITY_VIOLATION | The 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_DENIED | The file specified by File and FileBuffer did not authenticate, and the platform policy dictates that the DXE Foundation may not use File. |
EFI_SECURITY_VIOLATION | FileBuffer is NULL and the user has no permission to start UEFI device drivers on the device path specified by DevicePath. |
EFI_SECURITY_VIOLATION | FileBuffer 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] | VariableName | Name of the variable to be found. |
[in] | VendorGuid | Variable vendor GUID to be found. |
[out] | AuthVariableInfo | Pointer to AUTH_VARIABLE_INFO structure for output of the next variable. |
- Return values
-
EFI_INVALID_PARAMETER | If VariableName is not an empty string, while VendorGuid is NULL. |
EFI_SUCCESS | Variable successfully found. |
EFI_NOT_FOUND | Variable not found |
Update the variable region with Variable information.
- Parameters
-
- Return values
-
EFI_SUCCESS | The update operation is success. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_WRITE_PROTECTED | Variable is write-protected. |
EFI_OUT_OF_RESOURCES | There is not enough resource. |
Get scratch buffer.
- Parameters
-
[in,out] | ScratchBufferSize | Scratch buffer size. If input size is greater than the maximum supported buffer size, this value contains the maximum supported buffer size as output. |
[out] | ScratchBuffer | Pointer to scratch buffer address. |
- Return values
-
EFI_SUCCESS | Get scratch buffer successfully. |
EFI_UNSUPPORTED | If 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] | This | The PPI instance pointer. |
[in] | NamespaceId | Is 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] | Packet | A pointer to the EDKII PEI NVM Express PassThru Command Packet to send to the NVMe namespace specified by NamespaceId. |
- Return values
-
EFI_SUCCESS | The EDKII PEI NVM Express Command Packet was sent by the host. TransferLength bytes were transferred to, or from DataBuffer. |
EFI_NOT_READY | The EDKII PEI NVM Express Command Packet could not be sent because the controller is not ready. The caller may retry again later. |
EFI_DEVICE_ERROR | A device error occurred while attempting to send the EDKII PEI NVM Express Command Packet. |
EFI_INVALID_PARAMETER | Namespace, 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_UNSUPPORTED | The 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_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the NVM Express host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified NVM Express host controller not found. |
EFI_OUT_OF_RESOURCES | The operation fails due to lack of resources. |
Get the device path of ATA AHCI host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the ATA AHCI host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified ATA AHCI host controller not found. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in,out] | Port | On 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_SUCCESS | The next port number on the ATA controller was returned in Port. |
EFI_NOT_FOUND | There are no more ports on this ATA controller. |
EFI_INVALID_PARAMETER | Port 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] | This | The PPI instance pointer. |
[in] | Port | The port number present on the ATA controller. |
[in,out] | PortMultiplierPort | On 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_SUCCESS | The port multiplier port number of the next ATA device on the port of the ATA controller was returned in PortMultiplierPort. |
EFI_NOT_FOUND | There are no more ATA devices on this port of the ATA controller. |
EFI_INVALID_PARAMETER | PortMultiplierPort 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] | This | The PPI instance pointer. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The device path of the ATA host controller has been successfully returned. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_OUT_OF_RESOURCES | Not enough resource to return the device path. |
Gets the device path of a specific storage security device.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_NOT_FOUND | The specified storage security device not found. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[out] | PayloadBuffer | A 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] | PayloadTransferSize | A pointer to a buffer to store the size in bytes of the data written to the payload data buffer. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_WARN_BUFFER_TOO_SMALL | The PayloadBufferSize was too small to store the available data from the device. The PayloadBuffer contains the truncated data. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | The ID of the device. |
[in] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[in] | PayloadBuffer | A pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A 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
-
PeiServices | General purpose services available to every PEIM. |
This | The PEI_SMM_CONTROL_PPI instance. |
Periodic | Optional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically. |
- Return values
-
EFI_SUCCESS | The SMI/PMI has been engendered. |
EFI_DEVICE_ERROR | The source could not be cleared. |
EFI_INVALID_PARAMETER | The 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
-
This | The protocol instance |
HandlerGuid | The GUID to identify the type of the handler. For the SmmChildDispatch protocol, the HandlerGuid must be the GUID of SmmChildDispatch protocol. |
Handler | The SMI handler. |
Context | The context of the SMI handler. If it is NOT NULL, it will be used to check what is registered. |
ContextSize | The size of the context in bytes. If Context is NOT NULL, it will be used to check what is registered. |
- Return values
-
EFI_SUCCESS | The original record is removed. |
EFI_NOT_FOUND | There is no record for the HandlerGuid and handler. |
Set memory profile recording state.
- Parameters
-
[in] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[in] | RecordingState | Recording state. |
- Returns
- EFI_SUCCESS Set memory profile recording state successfully.
-
EFI_UNSUPPORTED Memory profile is unsupported.
Record memory profile of multilevel caller.
- Parameters
-
[in] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[in] | CallerAddress | Address of caller. |
[in] | Action | Memory profile action. |
[in] | MemoryType | Memory type. EfiMaxMemoryType means the MemoryType is unknown. |
[in] | Buffer | Buffer address. |
[in] | Size | Buffer size. |
[in] | ActionString | String 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] | Name | Pointer to the variable name. |
[in] | Guid | Pointer to the vendor GUID. |
[in] | VariableProperty | Pointer to the input variable property. |
- Return values
-
EFI_SUCCESS | The property of variable specified by the Name and Guid was set successfully. |
EFI_INVALID_PARAMETER | Name, Guid or VariableProperty is NULL, or Name is an empty string, or the fields of VariableProperty are not valid. |
EFI_ACCESS_DENIED | EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled. |
EFI_OUT_OF_RESOURCES | There is not enough resource for the variable property set request. |
Variable property get.
- Parameters
-
[in] | Name | Pointer to the variable name. |
[in] | Guid | Pointer to the vendor GUID. |
[out] | VariableProperty | Pointer to the output variable property. |
- Return values
-
EFI_SUCCESS | The property of variable specified by the Name and Guid was got successfully. |
EFI_INVALID_PARAMETER | Name, Guid or VariableProperty is NULL, or Name is an empty string. |
EFI_NOT_FOUND | The property of variable specified by the Name and Guid was not found. |
Allows platform protocol to override host controller information
- Parameters
-
[in] | ControllerHandle | Handle of the UFS controller. |
[in,out] | HcInfo | Pointer EDKII_UFS_HC_INFO associated with host controller. |
- Return values
-
EFI_SUCCESS | Function completed successfully. |
EFI_INVALID_PARAMETER | HcInfo is NULL. |
Others | Function failed to complete. |
Callback function for platform driver.
- Parameters
-
[in] | ControllerHandle | Handle of the UFS controller. |
[in] | CallbackPhase | Specifies when the platform protocol is called |
[in,out] | CallbackData | Data 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_SUCCESS | Override function completed successfully. |
EFI_INVALID_PARAMETER | CallbackPhase is invalid or CallbackData is NULL when phase expects valid data. |
Others | Function 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] | This | This pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure |
[in] | ImageBase | The base address in memory of the PE/COFF image |
- Return values
-
EFI_SUCCESS | The image was unregistered with the emulator. |
other | Image 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] | This | A pointer to the EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL structure. |
[in] | ConfigId | ID to be configured. |
[in] | ConfigValue | Value to be set. |
- Return values
-
EFI_UNSUPPORTED | No support for it. |
EFI_SUCCESS | Configure EBC debug. |
Override function for SDHCI controller operations
- Parameters
-
[in] | ControllerHandle | The EFI_HANDLE of the controller. |
[in] | Slot | The 0 based slot index. |
[in] | PhaseType | The type of operation and whether the hook is invoked right before (pre) or right after (post) |
[in,out] | PhaseData | The pointer to a phase-specific data. |
- Return values
-
EFI_SUCCESS | The override function completed successfully. |
EFI_NOT_FOUND | The specified controller or slot does not exist. |
EFI_INVALID_PARAMETER | PhaseType 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] | KeyData | A 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] | Action | Action value that describes what action will be trigged when the hot key is pressed. |
[in] | DefaultId | Specifies the type of defaults to retrieve, which is only for DEFAULT action. |
[in] | HelpString | Help string that describes the hot key information. Its value may be NULL for the unregistered hot key. |
- Return values
-
EFI_SUCCESS | Hot key is registered or unregistered. |
EFI_INVALID_PARAMETER | KeyData is NULL. |
Convert AsmText to the instruction. This function is only used for test purposes.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[in] | AsmText | A pointer to EBC ASM text code. |
[out] | Buffer | Buffer to store the instruction. |
[out] | BufferLen | Size of buffer that is required to store data. |
- Return values
-
EFI_UNSUPPORTED | This functionality is unsupported. |
EFI_SUCCESS | Successfully convert AsmText to the instruction. |
Dump the executed instruction. This function is only used for test purposes.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[out] | AsmText | Contain the disasm text. |
[out] | Buffer | Buffer to store the instruction. |
[out] | BufferLen | Size of buffer that is required to store data. |
- Return values
-
EFI_UNSUPPORTED | This functionality is unsupported. |
EFI_SUCCESS | Successfully dump the executed instruction. |
Display one form, and return user input.
- Parameters
-
FormData | Form Data to be shown. |
UserInputData | User input data. |
- Return values
-
EFI_SUCCESS | Form 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] | VariableName | Name of the variable to be found. |
[in] | VendorGuid | Variable vendor GUID to be found. |
[out] | AuthVariableInfo | Pointer to AUTH_VARIABLE_INFO structure for output of the variable found. |
- Return values
-
EFI_INVALID_PARAMETER | If VariableName is not an empty string, while VendorGuid is NULL. |
EFI_SUCCESS | Variable successfully found. |
EFI_NOT_FOUND | Variable 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] | VariableName | Name of the variable to be found. |
[in] | VendorGuid | Variable vendor GUID to be found. |
[out] | AuthVariableInfo | Pointer to AUTH_VARIABLE_INFO structure for output of the next variable. |
- Return values
-
EFI_INVALID_PARAMETER | If VariableName is not an empty string, while VendorGuid is NULL. |
EFI_SUCCESS | Variable successfully found. |
EFI_NOT_FOUND | Variable not found |
Update the variable region with Variable information.
- Parameters
-
- Return values
-
EFI_SUCCESS | The update operation is success. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_WRITE_PROTECTED | Variable is write-protected. |
EFI_OUT_OF_RESOURCES | There is not enough resource. |
Get scratch buffer.
- Parameters
-
[in,out] | ScratchBufferSize | Scratch buffer size. If input size is greater than the maximum supported buffer size, this value contains the maximum supported buffer size as output. |
[out] | ScratchBuffer | Pointer to scratch buffer address. |
- Return values
-
EFI_SUCCESS | Get scratch buffer successfully. |
EFI_UNSUPPORTED | If 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] | PeiServices | The pointer to the PEI Services Table. |
[in] | This | The pointer to this instance of the PEI_SEC_PERFORMANCE_PPI. |
[out] | Performance | The pointer to performance data collected in SEC phase. |
- Return values
-
EFI_SUCCESS | The performance data was successfully returned. |
Gets the device path information of the underlying NVM Express host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in] | NamespaceId | Is 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] | Packet | A pointer to the EDKII PEI NVM Express PassThru Command Packet to send to the NVMe namespace specified by NamespaceId. |
- Return values
-
EFI_SUCCESS | The EDKII PEI NVM Express Command Packet was sent by the host. TransferLength bytes were transferred to, or from DataBuffer. |
EFI_NOT_READY | The EDKII PEI NVM Express Command Packet could not be sent because the controller is not ready. The caller may retry again later. |
EFI_DEVICE_ERROR | A device error occurred while attempting to send the EDKII PEI NVM Express Command Packet. |
EFI_INVALID_PARAMETER | Namespace, 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_UNSUPPORTED | The 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_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the NVM Express host controller. |
[out] | MmioBar | The MMIO base address of the controller. |
- Return values
-
EFI_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified NVM Express host controller not found. |
Get the device path of NVM Express host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the NVM Express host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified NVM Express host controller not found. |
EFI_OUT_OF_RESOURCES | The operation fails due to lack of resources. |
Get the MMIO base address of ATA AHCI host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the ATA AHCI host controller. |
[out] | MmioBar | The MMIO base address of the controller. |
- Return values
-
EFI_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified ATA AHCI host controller not found. |
Get the device path of ATA AHCI host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the ATA AHCI host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified ATA AHCI host controller not found. |
EFI_OUT_OF_RESOURCES | The operation fails due to lack of resources. |
Sends an ATA command to an ATA device that is attached to the ATA controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | Port | The port number of the ATA device to send the command. |
[in] | PortMultiplierPort | The port multiplier port number of the ATA device to send the command. If there is no port multiplier, then specify 0xFFFF. |
[in,out] | Packet | A pointer to the ATA command to send to the ATA device specified by Port and PortMultiplierPort. |
- Return values
-
EFI_SUCCESS | The 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_FOUND | The specified ATA device is not found. |
EFI_INVALID_PARAMETER | The contents of Acb are invalid. The ATA command was not sent, so no additional status information is available. |
EFI_BAD_BUFFER_SIZE | The 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_READY | The ATA command could not be sent because there are too many ATA commands already queued. The caller may retry again later. |
EFI_DEVICE_ERROR | A 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] | This | The PPI instance pointer. |
[in,out] | Port | On 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_SUCCESS | The next port number on the ATA controller was returned in Port. |
EFI_NOT_FOUND | There are no more ports on this ATA controller. |
EFI_INVALID_PARAMETER | Port 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] | This | The PPI instance pointer. |
[in] | Port | The port number present on the ATA controller. |
[in,out] | PortMultiplierPort | On 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_SUCCESS | The port multiplier port number of the next ATA device on the port of the ATA controller was returned in PortMultiplierPort. |
EFI_NOT_FOUND | There are no more ATA devices on this port of the ATA controller. |
EFI_INVALID_PARAMETER | PortMultiplierPort 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] | This | The PPI instance pointer. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The device path of the ATA host controller has been successfully returned. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_OUT_OF_RESOURCES | Not enough resource to return the device path. |
This service enables submitting commands via Ipmi.
- Parameters
-
[in] | This | This point for PEI_IPMI_PPI structure. |
[in] | NetFunction | Net function of the command. |
[in] | Command | IPMI Command. |
[in] | RequestData | Command Request Data. |
[in] | RequestDataSize | Size of Command Request Data. |
[out] | ResponseData | Command Response Data. The completion code is the first byte of response data. |
[in,out] | ResponseDataSize | Size of Command Response Data. |
- Return values
-
EFI_SUCCESS | The command byte stream was successfully submit to the device and a response was successfully received. |
EFI_NOT_FOUND | The command was not successfully sent to the device or a response was not successfully received from the device. |
EFI_NOT_READY | Ipmi Device is not ready for Ipmi command access. |
EFI_DEVICE_ERROR | Ipmi Device hardware error. |
EFI_TIMEOUT | The command time out. |
EFI_UNSUPPORTED | The command was not successfully sent to the device. |
EFI_OUT_OF_RESOURCES | The resource allcation is out of resource or data size error. |
Gets the count of storage security devices that one specific driver detects.
- Parameters
-
[in] | This | The PPI instance pointer. |
[out] | NumberofDevices | The number of storage security devices discovered. |
- Return values
-
EFI_SUCCESS | The operation performed successfully. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
Gets the device path of a specific storage security device.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_NOT_FOUND | The specified storage security device not found. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[out] | PayloadBuffer | A 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] | PayloadTransferSize | A pointer to a buffer to store the size in bytes of the data written to the payload data buffer. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_WARN_BUFFER_TOO_SMALL | The PayloadBufferSize was too small to store the available data from the device. The PayloadBuffer contains the truncated data. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | The ID of the device. |
[in] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[in] | PayloadBuffer | A pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A timeout occurred while waiting for the security protocol command to execute. |
Invokes SMI activation from either the preboot or runtime environment.
- Parameters
-
PeiServices | General purpose services available to every PEIM. |
This | The PEI_SMM_CONTROL_PPI instance. |
ArgumentBuffer | The optional sized data to pass into the protocol activation. |
ArgumentBufferSize | The optional size of the data. |
Periodic | An optional mechanism to periodically repeat activation. |
ActivationInterval | An optional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically. |
- Return values
-
EFI_SUCCESS | The SMI/PMI has been engendered. |
EFI_DEVICE_ERROR | The timing is unsupported. |
EFI_INVALID_PARAMETER | The activation period is unsupported. |
EFI_NOT_STARTED | The SMM base service has not been initialized. |
Clears any system state that was created in response to the Active call.
- Parameters
-
PeiServices | General purpose services available to every PEIM. |
This | The PEI_SMM_CONTROL_PPI instance. |
Periodic | Optional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically. |
- Return values
-
EFI_SUCCESS | The SMI/PMI has been engendered. |
EFI_DEVICE_ERROR | The source could not be cleared. |
EFI_INVALID_PARAMETER | The service did not support the Periodic input argument. |
Perform device specific initialization before the device is started
- Parameters
-
This | The non-discoverable device protocol pointer |
- Return values
-
EFI_SUCCESS | Initialization successful, the device may be used |
Other | Initialization 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] | AuthenticationStatus | The authentication status for the input file. |
[in] | File | The pointer to the device path of the file that is being dispatched. This will optionally be used for logging. |
[in] | FileBuffer | A pointer to the buffer with the UEFI file image |
[in] | FileSize | The size of File buffer. |
[in] | BootPolicy | A boot policy that was used to call LoadImage() UEFI service. |
- Return values
-
EFI_SUCCESS | The file specified by DevicePath and non-NULL FileBuffer did authenticate, and the platform policy dictates that the DXE Foundation may use the file. |
EFI_SUCCESS | The 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_SUCCESS | FileBuffer is NULL and current user has permission to start UEFI device drivers on the device path specified by DevicePath. |
EFI_SECURITY_VIOLATION | The 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_DENIED | The file specified by File and FileBuffer did not authenticate, and the platform policy dictates that the DXE Foundation may not use File. |
EFI_SECURITY_VIOLATION | FileBuffer is NULL and the user has no permission to start UEFI device drivers on the device path specified by DevicePath. |
EFI_SECURITY_VIOLATION | FileBuffer 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] | VariableName | Name of the variable to be found. |
[in] | VendorGuid | Variable vendor GUID to be found. |
[out] | AuthVariableInfo | Pointer to AUTH_VARIABLE_INFO structure for output of the next variable. |
- Return values
-
EFI_INVALID_PARAMETER | If VariableName is not an empty string, while VendorGuid is NULL. |
EFI_SUCCESS | Variable successfully found. |
EFI_NOT_FOUND | Variable not found |
Update the variable region with Variable information.
- Parameters
-
- Return values
-
EFI_SUCCESS | The update operation is success. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_WRITE_PROTECTED | Variable is write-protected. |
EFI_OUT_OF_RESOURCES | There is not enough resource. |
Get scratch buffer.
- Parameters
-
[in,out] | ScratchBufferSize | Scratch buffer size. If input size is greater than the maximum supported buffer size, this value contains the maximum supported buffer size as output. |
[out] | ScratchBuffer | Pointer to scratch buffer address. |
- Return values
-
EFI_SUCCESS | Get scratch buffer successfully. |
EFI_UNSUPPORTED | If 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] | This | The PPI instance pointer. |
[in] | NamespaceId | Is 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] | Packet | A pointer to the EDKII PEI NVM Express PassThru Command Packet to send to the NVMe namespace specified by NamespaceId. |
- Return values
-
EFI_SUCCESS | The EDKII PEI NVM Express Command Packet was sent by the host. TransferLength bytes were transferred to, or from DataBuffer. |
EFI_NOT_READY | The EDKII PEI NVM Express Command Packet could not be sent because the controller is not ready. The caller may retry again later. |
EFI_DEVICE_ERROR | A device error occurred while attempting to send the EDKII PEI NVM Express Command Packet. |
EFI_INVALID_PARAMETER | Namespace, 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_UNSUPPORTED | The 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_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the NVM Express host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified NVM Express host controller not found. |
EFI_OUT_OF_RESOURCES | The operation fails due to lack of resources. |
Get the device path of ATA AHCI host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the ATA AHCI host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified ATA AHCI host controller not found. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in,out] | Port | On 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_SUCCESS | The next port number on the ATA controller was returned in Port. |
EFI_NOT_FOUND | There are no more ports on this ATA controller. |
EFI_INVALID_PARAMETER | Port 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] | This | The PPI instance pointer. |
[in] | Port | The port number present on the ATA controller. |
[in,out] | PortMultiplierPort | On 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_SUCCESS | The port multiplier port number of the next ATA device on the port of the ATA controller was returned in PortMultiplierPort. |
EFI_NOT_FOUND | There are no more ATA devices on this port of the ATA controller. |
EFI_INVALID_PARAMETER | PortMultiplierPort 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] | This | The PPI instance pointer. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The device path of the ATA host controller has been successfully returned. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_OUT_OF_RESOURCES | Not enough resource to return the device path. |
Gets the device path of a specific storage security device.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_NOT_FOUND | The specified storage security device not found. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[out] | PayloadBuffer | A 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] | PayloadTransferSize | A pointer to a buffer to store the size in bytes of the data written to the payload data buffer. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_WARN_BUFFER_TOO_SMALL | The PayloadBufferSize was too small to store the available data from the device. The PayloadBuffer contains the truncated data. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | The ID of the device. |
[in] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[in] | PayloadBuffer | A pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A 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
-
PeiServices | General purpose services available to every PEIM. |
This | The PEI_SMM_CONTROL_PPI instance. |
Periodic | Optional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically. |
- Return values
-
EFI_SUCCESS | The SMI/PMI has been engendered. |
EFI_DEVICE_ERROR | The source could not be cleared. |
EFI_INVALID_PARAMETER | The 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
-
This | The protocol instance |
HandlerGuid | The GUID to identify the type of the handler. For the SmmChildDispatch protocol, the HandlerGuid must be the GUID of SmmChildDispatch protocol. |
Handler | The SMI handler. |
Context | The context of the SMI handler. If it is NOT NULL, it will be used to check what is registered. |
ContextSize | The size of the context in bytes. If Context is NOT NULL, it will be used to check what is registered. |
- Return values
-
EFI_SUCCESS | The original record is removed. |
EFI_NOT_FOUND | There is no record for the HandlerGuid and handler. |
Set memory profile recording state.
- Parameters
-
[in] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[in] | RecordingState | Recording state. |
- Returns
- EFI_SUCCESS Set memory profile recording state successfully.
-
EFI_UNSUPPORTED Memory profile is unsupported.
Record memory profile of multilevel caller.
- Parameters
-
[in] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[in] | CallerAddress | Address of caller. |
[in] | Action | Memory profile action. |
[in] | MemoryType | Memory type. EfiMaxMemoryType means the MemoryType is unknown. |
[in] | Buffer | Buffer address. |
[in] | Size | Buffer size. |
[in] | ActionString | String 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] | Name | Pointer to the variable name. |
[in] | Guid | Pointer to the vendor GUID. |
[in] | VariableProperty | Pointer to the input variable property. |
- Return values
-
EFI_SUCCESS | The property of variable specified by the Name and Guid was set successfully. |
EFI_INVALID_PARAMETER | Name, Guid or VariableProperty is NULL, or Name is an empty string, or the fields of VariableProperty are not valid. |
EFI_ACCESS_DENIED | EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled. |
EFI_OUT_OF_RESOURCES | There is not enough resource for the variable property set request. |
Variable property get.
- Parameters
-
[in] | Name | Pointer to the variable name. |
[in] | Guid | Pointer to the vendor GUID. |
[out] | VariableProperty | Pointer to the output variable property. |
- Return values
-
EFI_SUCCESS | The property of variable specified by the Name and Guid was got successfully. |
EFI_INVALID_PARAMETER | Name, Guid or VariableProperty is NULL, or Name is an empty string. |
EFI_NOT_FOUND | The property of variable specified by the Name and Guid was not found. |
Allows platform protocol to override host controller information
- Parameters
-
[in] | ControllerHandle | Handle of the UFS controller. |
[in,out] | HcInfo | Pointer EDKII_UFS_HC_INFO associated with host controller. |
- Return values
-
EFI_SUCCESS | Function completed successfully. |
EFI_INVALID_PARAMETER | HcInfo is NULL. |
Others | Function failed to complete. |
Callback function for platform driver.
- Parameters
-
[in] | ControllerHandle | Handle of the UFS controller. |
[in] | CallbackPhase | Specifies when the platform protocol is called |
[in,out] | CallbackData | Data 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_SUCCESS | Override function completed successfully. |
EFI_INVALID_PARAMETER | CallbackPhase is invalid or CallbackData is NULL when phase expects valid data. |
Others | Function 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] | This | This pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure |
[in] | ImageBase | The base address in memory of the PE/COFF image |
- Return values
-
EFI_SUCCESS | The image was unregistered with the emulator. |
other | Image 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] | This | A pointer to the EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL structure. |
[in] | ConfigId | ID to be configured. |
[in] | ConfigValue | Value to be set. |
- Return values
-
EFI_UNSUPPORTED | No support for it. |
EFI_SUCCESS | Configure EBC debug. |
Override function for SDHCI controller operations
- Parameters
-
[in] | ControllerHandle | The EFI_HANDLE of the controller. |
[in] | Slot | The 0 based slot index. |
[in] | PhaseType | The type of operation and whether the hook is invoked right before (pre) or right after (post) |
[in,out] | PhaseData | The pointer to a phase-specific data. |
- Return values
-
EFI_SUCCESS | The override function completed successfully. |
EFI_NOT_FOUND | The specified controller or slot does not exist. |
EFI_INVALID_PARAMETER | PhaseType 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] | KeyData | A 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] | Action | Action value that describes what action will be trigged when the hot key is pressed. |
[in] | DefaultId | Specifies the type of defaults to retrieve, which is only for DEFAULT action. |
[in] | HelpString | Help string that describes the hot key information. Its value may be NULL for the unregistered hot key. |
- Return values
-
EFI_SUCCESS | Hot key is registered or unregistered. |
EFI_INVALID_PARAMETER | KeyData is NULL. |
Convert AsmText to the instruction. This function is only used for test purposes.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[in] | AsmText | A pointer to EBC ASM text code. |
[out] | Buffer | Buffer to store the instruction. |
[out] | BufferLen | Size of buffer that is required to store data. |
- Return values
-
EFI_UNSUPPORTED | This functionality is unsupported. |
EFI_SUCCESS | Successfully convert AsmText to the instruction. |
Dump the executed instruction. This function is only used for test purposes.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[out] | AsmText | Contain the disasm text. |
[out] | Buffer | Buffer to store the instruction. |
[out] | BufferLen | Size of buffer that is required to store data. |
- Return values
-
EFI_UNSUPPORTED | This functionality is unsupported. |
EFI_SUCCESS | Successfully dump the executed instruction. |
Display one form, and return user input.
- Parameters
-
FormData | Form Data to be shown. |
UserInputData | User input data. |
- Return values
-
EFI_SUCCESS | Form 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] | VariableName | Name of the variable to be found. |
[in] | VendorGuid | Variable vendor GUID to be found. |
[out] | AuthVariableInfo | Pointer to AUTH_VARIABLE_INFO structure for output of the variable found. |
- Return values
-
EFI_INVALID_PARAMETER | If VariableName is not an empty string, while VendorGuid is NULL. |
EFI_SUCCESS | Variable successfully found. |
EFI_NOT_FOUND | Variable 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] | VariableName | Name of the variable to be found. |
[in] | VendorGuid | Variable vendor GUID to be found. |
[out] | AuthVariableInfo | Pointer to AUTH_VARIABLE_INFO structure for output of the next variable. |
- Return values
-
EFI_INVALID_PARAMETER | If VariableName is not an empty string, while VendorGuid is NULL. |
EFI_SUCCESS | Variable successfully found. |
EFI_NOT_FOUND | Variable not found |
Update the variable region with Variable information.
- Parameters
-
- Return values
-
EFI_SUCCESS | The update operation is success. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_WRITE_PROTECTED | Variable is write-protected. |
EFI_OUT_OF_RESOURCES | There is not enough resource. |
Get scratch buffer.
- Parameters
-
[in,out] | ScratchBufferSize | Scratch buffer size. If input size is greater than the maximum supported buffer size, this value contains the maximum supported buffer size as output. |
[out] | ScratchBuffer | Pointer to scratch buffer address. |
- Return values
-
EFI_SUCCESS | Get scratch buffer successfully. |
EFI_UNSUPPORTED | If 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] | PeiServices | The pointer to the PEI Services Table. |
[in] | This | The pointer to this instance of the PEI_SEC_PERFORMANCE_PPI. |
[out] | Performance | The pointer to performance data collected in SEC phase. |
- Return values
-
EFI_SUCCESS | The performance data was successfully returned. |
Gets the device path information of the underlying NVM Express host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in] | NamespaceId | Is 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] | Packet | A pointer to the EDKII PEI NVM Express PassThru Command Packet to send to the NVMe namespace specified by NamespaceId. |
- Return values
-
EFI_SUCCESS | The EDKII PEI NVM Express Command Packet was sent by the host. TransferLength bytes were transferred to, or from DataBuffer. |
EFI_NOT_READY | The EDKII PEI NVM Express Command Packet could not be sent because the controller is not ready. The caller may retry again later. |
EFI_DEVICE_ERROR | A device error occurred while attempting to send the EDKII PEI NVM Express Command Packet. |
EFI_INVALID_PARAMETER | Namespace, 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_UNSUPPORTED | The 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_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the NVM Express host controller. |
[out] | MmioBar | The MMIO base address of the controller. |
- Return values
-
EFI_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified NVM Express host controller not found. |
Get the device path of NVM Express host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the NVM Express host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified NVM Express host controller not found. |
EFI_OUT_OF_RESOURCES | The operation fails due to lack of resources. |
Get the MMIO base address of ATA AHCI host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the ATA AHCI host controller. |
[out] | MmioBar | The MMIO base address of the controller. |
- Return values
-
EFI_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified ATA AHCI host controller not found. |
Get the device path of ATA AHCI host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the ATA AHCI host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified ATA AHCI host controller not found. |
EFI_OUT_OF_RESOURCES | The operation fails due to lack of resources. |
Sends an ATA command to an ATA device that is attached to the ATA controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | Port | The port number of the ATA device to send the command. |
[in] | PortMultiplierPort | The port multiplier port number of the ATA device to send the command. If there is no port multiplier, then specify 0xFFFF. |
[in,out] | Packet | A pointer to the ATA command to send to the ATA device specified by Port and PortMultiplierPort. |
- Return values
-
EFI_SUCCESS | The 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_FOUND | The specified ATA device is not found. |
EFI_INVALID_PARAMETER | The contents of Acb are invalid. The ATA command was not sent, so no additional status information is available. |
EFI_BAD_BUFFER_SIZE | The 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_READY | The ATA command could not be sent because there are too many ATA commands already queued. The caller may retry again later. |
EFI_DEVICE_ERROR | A 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] | This | The PPI instance pointer. |
[in,out] | Port | On 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_SUCCESS | The next port number on the ATA controller was returned in Port. |
EFI_NOT_FOUND | There are no more ports on this ATA controller. |
EFI_INVALID_PARAMETER | Port 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] | This | The PPI instance pointer. |
[in] | Port | The port number present on the ATA controller. |
[in,out] | PortMultiplierPort | On 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_SUCCESS | The port multiplier port number of the next ATA device on the port of the ATA controller was returned in PortMultiplierPort. |
EFI_NOT_FOUND | There are no more ATA devices on this port of the ATA controller. |
EFI_INVALID_PARAMETER | PortMultiplierPort 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] | This | The PPI instance pointer. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The device path of the ATA host controller has been successfully returned. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_OUT_OF_RESOURCES | Not enough resource to return the device path. |
This service enables submitting commands via Ipmi.
- Parameters
-
[in] | This | This point for PEI_IPMI_PPI structure. |
[in] | NetFunction | Net function of the command. |
[in] | Command | IPMI Command. |
[in] | RequestData | Command Request Data. |
[in] | RequestDataSize | Size of Command Request Data. |
[out] | ResponseData | Command Response Data. The completion code is the first byte of response data. |
[in,out] | ResponseDataSize | Size of Command Response Data. |
- Return values
-
EFI_SUCCESS | The command byte stream was successfully submit to the device and a response was successfully received. |
EFI_NOT_FOUND | The command was not successfully sent to the device or a response was not successfully received from the device. |
EFI_NOT_READY | Ipmi Device is not ready for Ipmi command access. |
EFI_DEVICE_ERROR | Ipmi Device hardware error. |
EFI_TIMEOUT | The command time out. |
EFI_UNSUPPORTED | The command was not successfully sent to the device. |
EFI_OUT_OF_RESOURCES | The resource allcation is out of resource or data size error. |
Gets the count of storage security devices that one specific driver detects.
- Parameters
-
[in] | This | The PPI instance pointer. |
[out] | NumberofDevices | The number of storage security devices discovered. |
- Return values
-
EFI_SUCCESS | The operation performed successfully. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
Gets the device path of a specific storage security device.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_NOT_FOUND | The specified storage security device not found. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[out] | PayloadBuffer | A 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] | PayloadTransferSize | A pointer to a buffer to store the size in bytes of the data written to the payload data buffer. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_WARN_BUFFER_TOO_SMALL | The PayloadBufferSize was too small to store the available data from the device. The PayloadBuffer contains the truncated data. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | The ID of the device. |
[in] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[in] | PayloadBuffer | A pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A timeout occurred while waiting for the security protocol command to execute. |
Invokes SMI activation from either the preboot or runtime environment.
- Parameters
-
PeiServices | General purpose services available to every PEIM. |
This | The PEI_SMM_CONTROL_PPI instance. |
ArgumentBuffer | The optional sized data to pass into the protocol activation. |
ArgumentBufferSize | The optional size of the data. |
Periodic | An optional mechanism to periodically repeat activation. |
ActivationInterval | An optional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically. |
- Return values
-
EFI_SUCCESS | The SMI/PMI has been engendered. |
EFI_DEVICE_ERROR | The timing is unsupported. |
EFI_INVALID_PARAMETER | The activation period is unsupported. |
EFI_NOT_STARTED | The SMM base service has not been initialized. |
Clears any system state that was created in response to the Active call.
- Parameters
-
PeiServices | General purpose services available to every PEIM. |
This | The PEI_SMM_CONTROL_PPI instance. |
Periodic | Optional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically. |
- Return values
-
EFI_SUCCESS | The SMI/PMI has been engendered. |
EFI_DEVICE_ERROR | The source could not be cleared. |
EFI_INVALID_PARAMETER | The 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
-
This | The protocol instance |
HandlerGuid | The GUID to identify the type of the handler. For the SmmChildDispatch protocol, the HandlerGuid must be the GUID of SmmChildDispatch protocol. |
Handler | The SMI handler. |
CallerAddress | The address of the module who registers the SMI handler. |
Context | The context of the SMI handler. For the SmmChildDispatch protocol, the Context must match the one defined for SmmChildDispatch protocol. |
ContextSize | The size of the context in bytes. For the SmmChildDispatch protocol, the Context must match the one defined for SmmChildDispatch protocol. |
- Return values
-
EFI_SUCCESS | The information is recorded. |
EFI_OUT_OF_RESOURCES | There 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
-
This | The protocol instance |
HandlerGuid | The GUID to identify the type of the handler. For the SmmChildDispatch protocol, the HandlerGuid must be the GUID of SmmChildDispatch protocol. |
Handler | The SMI handler. |
Context | The context of the SMI handler. If it is NOT NULL, it will be used to check what is registered. |
ContextSize | The size of the context in bytes. If Context is NOT NULL, it will be used to check what is registered. |
- Return values
-
EFI_SUCCESS | The original record is removed. |
EFI_NOT_FOUND | There is no record for the HandlerGuid and handler. |
Get memory profile recording state.
- Parameters
-
[in] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[out] | RecordingState | Recording 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] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[in] | RecordingState | Recording state. |
- Returns
- EFI_SUCCESS Set memory profile recording state successfully.
-
EFI_UNSUPPORTED Memory profile is unsupported.
Record memory profile of multilevel caller.
- Parameters
-
[in] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[in] | CallerAddress | Address of caller. |
[in] | Action | Memory profile action. |
[in] | MemoryType | Memory type. EfiMaxMemoryType means the MemoryType is unknown. |
[in] | Buffer | Buffer address. |
[in] | Size | Buffer size. |
[in] | ActionString | String 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] | Handler | Pointer to the check handler. |
- Return values
-
EFI_SUCCESS | The SetVariable check handler was registered successfully. |
EFI_INVALID_PARAMETER | Handler is NULL. |
EFI_ACCESS_DENIED | EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled. |
EFI_OUT_OF_RESOURCES | There is not enough resource for the SetVariable check handler register request. |
EFI_UNSUPPORTED | This 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] | Name | Pointer to the variable name. |
[in] | Guid | Pointer to the vendor GUID. |
[in] | VariableProperty | Pointer to the input variable property. |
- Return values
-
EFI_SUCCESS | The property of variable specified by the Name and Guid was set successfully. |
EFI_INVALID_PARAMETER | Name, Guid or VariableProperty is NULL, or Name is an empty string, or the fields of VariableProperty are not valid. |
EFI_ACCESS_DENIED | EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled. |
EFI_OUT_OF_RESOURCES | There is not enough resource for the variable property set request. |
Variable property get.
- Parameters
-
[in] | Name | Pointer to the variable name. |
[in] | Guid | Pointer to the vendor GUID. |
[out] | VariableProperty | Pointer to the output variable property. |
- Return values
-
EFI_SUCCESS | The property of variable specified by the Name and Guid was got successfully. |
EFI_INVALID_PARAMETER | Name, Guid or VariableProperty is NULL, or Name is an empty string. |
EFI_NOT_FOUND | The property of variable specified by the Name and Guid was not found. |
This service enables submitting commands via Ipmi.
- Parameters
-
[in] | This | This point for IPMI_PROTOCOL structure. |
[in] | NetFunction | Net function of the command. |
[in] | Command | IPMI Command. |
[in] | RequestData | Command Request Data. |
[in] | RequestDataSize | Size of Command Request Data. |
[out] | ResponseData | Command Response Data. The completion code is the first byte of response data. |
[in,out] | ResponseDataSize | Size of Command Response Data. |
- Return values
-
EFI_SUCCESS | The command byte stream was successfully submit to the device and a response was successfully received. |
EFI_NOT_FOUND | The command was not successfully sent to the device or a response was not successfully received from the device. |
EFI_NOT_READY | Ipmi Device is not ready for Ipmi command access. |
EFI_DEVICE_ERROR | Ipmi Device hardware error. |
EFI_TIMEOUT | The command time out. |
EFI_UNSUPPORTED | The command was not successfully sent to the device. |
EFI_OUT_OF_RESOURCES | The resource allcation is out of resource or data size error. |
Execute UIC command
- Parameters
-
[in] | This | Pointer to driver interface produced by the UFS controller. |
[in,out] | UicCommand | Descriptor of the command that will be executed. |
- Return values
-
EFI_SUCCESS | Command executed successfully. |
EFI_INVALID_PARAMETER | This or UicCommand is NULL. |
Others | Command failed to execute. |
Allows platform protocol to override host controller information
- Parameters
-
[in] | ControllerHandle | Handle of the UFS controller. |
[in,out] | HcInfo | Pointer EDKII_UFS_HC_INFO associated with host controller. |
- Return values
-
EFI_SUCCESS | Function completed successfully. |
EFI_INVALID_PARAMETER | HcInfo is NULL. |
Others | Function failed to complete. |
Callback function for platform driver.
- Parameters
-
[in] | ControllerHandle | Handle of the UFS controller. |
[in] | CallbackPhase | Specifies when the platform protocol is called |
[in,out] | CallbackData | Data 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_SUCCESS | Override function completed successfully. |
EFI_INVALID_PARAMETER | CallbackPhase is invalid or CallbackData is NULL when phase expects valid data. |
Others | Function 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] | This | This pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure |
[in] | ImageBase | The base address in memory of the PE/COFF image |
[in] | ImageSize | The size in memory of the PE/COFF image |
[in,out] | EntryPoint | The entry point of the PE/COFF image. Passed by reference so that the emulator may modify it. |
- Return values
-
EFI_SUCCESS | The image was registered with the emulator and can be started as usual. |
other | The 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] | This | This pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure |
[in] | ImageBase | The base address in memory of the PE/COFF image |
- Return values
-
EFI_SUCCESS | The image was unregistered with the emulator. |
other | Image could not be unloaded. |
Trig Exception on EBC VM.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL structure. |
[in] | VmPtr | A pointer to a VM context. |
[in] | ExceptionType | Exception to be trigged. |
- Return values
-
EFI_UNSUPPORTED | No support for it. |
EFI_SUCCESS | Exception 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] | This | A pointer to the EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL structure. |
[in] | ConfigId | ID to be configured. |
[in] | ConfigValue | Value to be set. |
- Return values
-
EFI_UNSUPPORTED | No support for it. |
EFI_SUCCESS | Configure 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
-
RootDirectory | Pointer to the root directory. |
FileType | The file type need to choose. |
ChooseHandler | Function pointer to the extra task need to do after choose one file. |
File | Return the device path for the last time chosed file. |
- Return values
-
EFI_SUCESS | Choose the file success. |
Other | errors Choose the file failed. |
Execute the action requested by the Action parameter.
- Parameters
-
[in] | Action | Execute the request action. |
[in] | DefaultId | The default Id info when need to load default value. |
- Return values
-
EFI_SUCCESS | Execute the request action succss. |
Override function for SDHCI capability bits
- Parameters
-
[in] | ControllerHandle | The EFI_HANDLE of the controller. |
[in] | Slot | The 0 based slot index. |
[in,out] | SdMmcHcSlotCapability | The SDHCI capability structure. |
[in,out] | BaseClkFreq | The base clock frequency value that optionally can be updated. |
- Return values
-
EFI_SUCCESS | The override function completed successfully. |
EFI_NOT_FOUND | The specified controller or slot does not exist. |
EFI_INVALID_PARAMETER | SdMmcHcSlotCapability is NULL |
Override function for SDHCI controller operations
- Parameters
-
[in] | ControllerHandle | The EFI_HANDLE of the controller. |
[in] | Slot | The 0 based slot index. |
[in] | PhaseType | The type of operation and whether the hook is invoked right before (pre) or right after (post) |
[in,out] | PhaseData | The pointer to a phase-specific data. |
- Return values
-
EFI_SUCCESS | The override function completed successfully. |
EFI_NOT_FOUND | The specified controller or slot does not exist. |
EFI_INVALID_PARAMETER | PhaseType 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] | This | The EDKII_VARIABLE_LOCK_PROTOCOL instance. |
[in] | VariableName | A pointer to the variable name that will be made read-only subsequently. |
[in] | VendorGuid | A pointer to the vendor GUID that will be made read-only subsequently. |
- Return values
-
EFI_SUCCESS | The variable specified by the VariableName and the VendorGuid was marked as pending to be read-only. |
EFI_INVALID_PARAMETER | VariableName or VendorGuid is NULL. Or VariableName is an empty string. |
EFI_ACCESS_DENIED | EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled. |
EFI_OUT_OF_RESOURCES | There 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] | Scope | Scope level to be set. |
- Return values
-
EFI_SUCCESS | Scope is set correctly. |
EFI_INVALID_PARAMETER | Scope is not the valid value specified in BROWSER_SETTING_SCOPE. |
EFI_UNSPPORTED | Scope 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] | KeyData | A 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] | Action | Action value that describes what action will be trigged when the hot key is pressed. |
[in] | DefaultId | Specifies the type of defaults to retrieve, which is only for DEFAULT action. |
[in] | HelpString | Help string that describes the hot key information. Its value may be NULL for the unregistered hot key. |
- Return values
-
EFI_SUCCESS | Hot key is registered or unregistered. |
EFI_INVALID_PARAMETER | KeyData 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] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[in] | VmPtr | A pointer to a VM context. |
[in,out] | InstructionCount | A 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_UNSUPPORTED | At least one of the opcodes is not supported. |
EFI_SUCCESS | All of the instructions are executed successfully. |
Convert AsmText to the instruction. This function is only used for test purposes.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[in] | AsmText | A pointer to EBC ASM text code. |
[out] | Buffer | Buffer to store the instruction. |
[out] | BufferLen | Size of buffer that is required to store data. |
- Return values
-
EFI_UNSUPPORTED | This functionality is unsupported. |
EFI_SUCCESS | Successfully convert AsmText to the instruction. |
Dump the executed instruction. This function is only used for test purposes.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[out] | AsmText | Contain the disasm text. |
[out] | Buffer | Buffer to store the instruction. |
[out] | BufferLen | Size of buffer that is required to store data. |
- Return values
-
EFI_UNSUPPORTED | This functionality is unsupported. |
EFI_SUCCESS | Successfully dump the executed instruction. |
Perform Password check. Passwork may be encrypted by driver that requires the specific check.
- Parameters
-
Form | Form where Password Statement is in. |
Statement | Password statement |
PasswordString | Password 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
-
FormData | Form Data to be shown. |
UserInputData | User input data. |
- Return values
-
EFI_SUCCESS | Form Data is shown, and user input is got. |
Perform device specific initialization before the device is started
- Parameters
-
This | The non-discoverable device protocol pointer |
- Return values
-
EFI_SUCCESS | Initialization successful, the device may be used |
Other | Initialization 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] | AuthenticationStatus | The authentication status for the input file. |
[in] | File | The pointer to the device path of the file that is being dispatched. This will optionally be used for logging. |
[in] | FileBuffer | A pointer to the buffer with the UEFI file image |
[in] | FileSize | The size of File buffer. |
[in] | BootPolicy | A boot policy that was used to call LoadImage() UEFI service. |
- Return values
-
EFI_SUCCESS | The file specified by DevicePath and non-NULL FileBuffer did authenticate, and the platform policy dictates that the DXE Foundation may use the file. |
EFI_SUCCESS | The 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_SUCCESS | FileBuffer is NULL and current user has permission to start UEFI device drivers on the device path specified by DevicePath. |
EFI_SECURITY_VIOLATION | The 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_DENIED | The file specified by File and FileBuffer did not authenticate, and the platform policy dictates that the DXE Foundation may not use File. |
EFI_SECURITY_VIOLATION | FileBuffer is NULL and the user has no permission to start UEFI device drivers on the device path specified by DevicePath. |
EFI_SECURITY_VIOLATION | FileBuffer 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] | VariableName | Name of the variable to be found. |
[in] | VendorGuid | Variable vendor GUID to be found. |
[out] | AuthVariableInfo | Pointer to AUTH_VARIABLE_INFO structure for output of the next variable. |
- Return values
-
EFI_INVALID_PARAMETER | If VariableName is not an empty string, while VendorGuid is NULL. |
EFI_SUCCESS | Variable successfully found. |
EFI_NOT_FOUND | Variable not found |
Update the variable region with Variable information.
- Parameters
-
- Return values
-
EFI_SUCCESS | The update operation is success. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_WRITE_PROTECTED | Variable is write-protected. |
EFI_OUT_OF_RESOURCES | There is not enough resource. |
Get scratch buffer.
- Parameters
-
[in,out] | ScratchBufferSize | Scratch buffer size. If input size is greater than the maximum supported buffer size, this value contains the maximum supported buffer size as output. |
[out] | ScratchBuffer | Pointer to scratch buffer address. |
- Return values
-
EFI_SUCCESS | Get scratch buffer successfully. |
EFI_UNSUPPORTED | If 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] | This | The PPI instance pointer. |
[in] | NamespaceId | Is 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] | Packet | A pointer to the EDKII PEI NVM Express PassThru Command Packet to send to the NVMe namespace specified by NamespaceId. |
- Return values
-
EFI_SUCCESS | The EDKII PEI NVM Express Command Packet was sent by the host. TransferLength bytes were transferred to, or from DataBuffer. |
EFI_NOT_READY | The EDKII PEI NVM Express Command Packet could not be sent because the controller is not ready. The caller may retry again later. |
EFI_DEVICE_ERROR | A device error occurred while attempting to send the EDKII PEI NVM Express Command Packet. |
EFI_INVALID_PARAMETER | Namespace, 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_UNSUPPORTED | The 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_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the NVM Express host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified NVM Express host controller not found. |
EFI_OUT_OF_RESOURCES | The operation fails due to lack of resources. |
Get the device path of ATA AHCI host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the ATA AHCI host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified ATA AHCI host controller not found. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in,out] | Port | On 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_SUCCESS | The next port number on the ATA controller was returned in Port. |
EFI_NOT_FOUND | There are no more ports on this ATA controller. |
EFI_INVALID_PARAMETER | Port 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] | This | The PPI instance pointer. |
[in] | Port | The port number present on the ATA controller. |
[in,out] | PortMultiplierPort | On 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_SUCCESS | The port multiplier port number of the next ATA device on the port of the ATA controller was returned in PortMultiplierPort. |
EFI_NOT_FOUND | There are no more ATA devices on this port of the ATA controller. |
EFI_INVALID_PARAMETER | PortMultiplierPort 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] | This | The PPI instance pointer. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The device path of the ATA host controller has been successfully returned. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_OUT_OF_RESOURCES | Not enough resource to return the device path. |
Gets the device path of a specific storage security device.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_NOT_FOUND | The specified storage security device not found. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[out] | PayloadBuffer | A 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] | PayloadTransferSize | A pointer to a buffer to store the size in bytes of the data written to the payload data buffer. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_WARN_BUFFER_TOO_SMALL | The PayloadBufferSize was too small to store the available data from the device. The PayloadBuffer contains the truncated data. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | The ID of the device. |
[in] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[in] | PayloadBuffer | A pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A 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
-
PeiServices | General purpose services available to every PEIM. |
This | The PEI_SMM_CONTROL_PPI instance. |
Periodic | Optional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically. |
- Return values
-
EFI_SUCCESS | The SMI/PMI has been engendered. |
EFI_DEVICE_ERROR | The source could not be cleared. |
EFI_INVALID_PARAMETER | The 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
-
This | The protocol instance |
HandlerGuid | The GUID to identify the type of the handler. For the SmmChildDispatch protocol, the HandlerGuid must be the GUID of SmmChildDispatch protocol. |
Handler | The SMI handler. |
Context | The context of the SMI handler. If it is NOT NULL, it will be used to check what is registered. |
ContextSize | The size of the context in bytes. If Context is NOT NULL, it will be used to check what is registered. |
- Return values
-
EFI_SUCCESS | The original record is removed. |
EFI_NOT_FOUND | There is no record for the HandlerGuid and handler. |
Set memory profile recording state.
- Parameters
-
[in] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[in] | RecordingState | Recording state. |
- Returns
- EFI_SUCCESS Set memory profile recording state successfully.
-
EFI_UNSUPPORTED Memory profile is unsupported.
Record memory profile of multilevel caller.
- Parameters
-
[in] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[in] | CallerAddress | Address of caller. |
[in] | Action | Memory profile action. |
[in] | MemoryType | Memory type. EfiMaxMemoryType means the MemoryType is unknown. |
[in] | Buffer | Buffer address. |
[in] | Size | Buffer size. |
[in] | ActionString | String 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] | Name | Pointer to the variable name. |
[in] | Guid | Pointer to the vendor GUID. |
[in] | VariableProperty | Pointer to the input variable property. |
- Return values
-
EFI_SUCCESS | The property of variable specified by the Name and Guid was set successfully. |
EFI_INVALID_PARAMETER | Name, Guid or VariableProperty is NULL, or Name is an empty string, or the fields of VariableProperty are not valid. |
EFI_ACCESS_DENIED | EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled. |
EFI_OUT_OF_RESOURCES | There is not enough resource for the variable property set request. |
Variable property get.
- Parameters
-
[in] | Name | Pointer to the variable name. |
[in] | Guid | Pointer to the vendor GUID. |
[out] | VariableProperty | Pointer to the output variable property. |
- Return values
-
EFI_SUCCESS | The property of variable specified by the Name and Guid was got successfully. |
EFI_INVALID_PARAMETER | Name, Guid or VariableProperty is NULL, or Name is an empty string. |
EFI_NOT_FOUND | The property of variable specified by the Name and Guid was not found. |
Allows platform protocol to override host controller information
- Parameters
-
[in] | ControllerHandle | Handle of the UFS controller. |
[in,out] | HcInfo | Pointer EDKII_UFS_HC_INFO associated with host controller. |
- Return values
-
EFI_SUCCESS | Function completed successfully. |
EFI_INVALID_PARAMETER | HcInfo is NULL. |
Others | Function failed to complete. |
Callback function for platform driver.
- Parameters
-
[in] | ControllerHandle | Handle of the UFS controller. |
[in] | CallbackPhase | Specifies when the platform protocol is called |
[in,out] | CallbackData | Data 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_SUCCESS | Override function completed successfully. |
EFI_INVALID_PARAMETER | CallbackPhase is invalid or CallbackData is NULL when phase expects valid data. |
Others | Function 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] | This | This pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure |
[in] | ImageBase | The base address in memory of the PE/COFF image |
- Return values
-
EFI_SUCCESS | The image was unregistered with the emulator. |
other | Image 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] | This | A pointer to the EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL structure. |
[in] | ConfigId | ID to be configured. |
[in] | ConfigValue | Value to be set. |
- Return values
-
EFI_UNSUPPORTED | No support for it. |
EFI_SUCCESS | Configure EBC debug. |
Override function for SDHCI controller operations
- Parameters
-
[in] | ControllerHandle | The EFI_HANDLE of the controller. |
[in] | Slot | The 0 based slot index. |
[in] | PhaseType | The type of operation and whether the hook is invoked right before (pre) or right after (post) |
[in,out] | PhaseData | The pointer to a phase-specific data. |
- Return values
-
EFI_SUCCESS | The override function completed successfully. |
EFI_NOT_FOUND | The specified controller or slot does not exist. |
EFI_INVALID_PARAMETER | PhaseType 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] | KeyData | A 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] | Action | Action value that describes what action will be trigged when the hot key is pressed. |
[in] | DefaultId | Specifies the type of defaults to retrieve, which is only for DEFAULT action. |
[in] | HelpString | Help string that describes the hot key information. Its value may be NULL for the unregistered hot key. |
- Return values
-
EFI_SUCCESS | Hot key is registered or unregistered. |
EFI_INVALID_PARAMETER | KeyData is NULL. |
Convert AsmText to the instruction. This function is only used for test purposes.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[in] | AsmText | A pointer to EBC ASM text code. |
[out] | Buffer | Buffer to store the instruction. |
[out] | BufferLen | Size of buffer that is required to store data. |
- Return values
-
EFI_UNSUPPORTED | This functionality is unsupported. |
EFI_SUCCESS | Successfully convert AsmText to the instruction. |
Dump the executed instruction. This function is only used for test purposes.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[out] | AsmText | Contain the disasm text. |
[out] | Buffer | Buffer to store the instruction. |
[out] | BufferLen | Size of buffer that is required to store data. |
- Return values
-
EFI_UNSUPPORTED | This functionality is unsupported. |
EFI_SUCCESS | Successfully dump the executed instruction. |
Display one form, and return user input.
- Parameters
-
FormData | Form Data to be shown. |
UserInputData | User input data. |
- Return values
-
EFI_SUCCESS | Form 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] | VariableName | Name of the variable to be found. |
[in] | VendorGuid | Variable vendor GUID to be found. |
[out] | AuthVariableInfo | Pointer to AUTH_VARIABLE_INFO structure for output of the variable found. |
- Return values
-
EFI_INVALID_PARAMETER | If VariableName is not an empty string, while VendorGuid is NULL. |
EFI_SUCCESS | Variable successfully found. |
EFI_NOT_FOUND | Variable 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] | VariableName | Name of the variable to be found. |
[in] | VendorGuid | Variable vendor GUID to be found. |
[out] | AuthVariableInfo | Pointer to AUTH_VARIABLE_INFO structure for output of the next variable. |
- Return values
-
EFI_INVALID_PARAMETER | If VariableName is not an empty string, while VendorGuid is NULL. |
EFI_SUCCESS | Variable successfully found. |
EFI_NOT_FOUND | Variable not found |
Update the variable region with Variable information.
- Parameters
-
- Return values
-
EFI_SUCCESS | The update operation is success. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_WRITE_PROTECTED | Variable is write-protected. |
EFI_OUT_OF_RESOURCES | There is not enough resource. |
Get scratch buffer.
- Parameters
-
[in,out] | ScratchBufferSize | Scratch buffer size. If input size is greater than the maximum supported buffer size, this value contains the maximum supported buffer size as output. |
[out] | ScratchBuffer | Pointer to scratch buffer address. |
- Return values
-
EFI_SUCCESS | Get scratch buffer successfully. |
EFI_UNSUPPORTED | If 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] | PeiServices | The pointer to the PEI Services Table. |
[in] | This | The pointer to this instance of the PEI_SEC_PERFORMANCE_PPI. |
[out] | Performance | The pointer to performance data collected in SEC phase. |
- Return values
-
EFI_SUCCESS | The performance data was successfully returned. |
Gets the device path information of the underlying NVM Express host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in] | NamespaceId | Is 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] | Packet | A pointer to the EDKII PEI NVM Express PassThru Command Packet to send to the NVMe namespace specified by NamespaceId. |
- Return values
-
EFI_SUCCESS | The EDKII PEI NVM Express Command Packet was sent by the host. TransferLength bytes were transferred to, or from DataBuffer. |
EFI_NOT_READY | The EDKII PEI NVM Express Command Packet could not be sent because the controller is not ready. The caller may retry again later. |
EFI_DEVICE_ERROR | A device error occurred while attempting to send the EDKII PEI NVM Express Command Packet. |
EFI_INVALID_PARAMETER | Namespace, 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_UNSUPPORTED | The 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_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the NVM Express host controller. |
[out] | MmioBar | The MMIO base address of the controller. |
- Return values
-
EFI_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified NVM Express host controller not found. |
Get the device path of NVM Express host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the NVM Express host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified NVM Express host controller not found. |
EFI_OUT_OF_RESOURCES | The operation fails due to lack of resources. |
Get the MMIO base address of ATA AHCI host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the ATA AHCI host controller. |
[out] | MmioBar | The MMIO base address of the controller. |
- Return values
-
EFI_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified ATA AHCI host controller not found. |
Get the device path of ATA AHCI host controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | ControllerId | The ID of the ATA AHCI host controller. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
EFI_NOT_FOUND | The specified ATA AHCI host controller not found. |
EFI_OUT_OF_RESOURCES | The operation fails due to lack of resources. |
Sends an ATA command to an ATA device that is attached to the ATA controller.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | Port | The port number of the ATA device to send the command. |
[in] | PortMultiplierPort | The port multiplier port number of the ATA device to send the command. If there is no port multiplier, then specify 0xFFFF. |
[in,out] | Packet | A pointer to the ATA command to send to the ATA device specified by Port and PortMultiplierPort. |
- Return values
-
EFI_SUCCESS | The 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_FOUND | The specified ATA device is not found. |
EFI_INVALID_PARAMETER | The contents of Acb are invalid. The ATA command was not sent, so no additional status information is available. |
EFI_BAD_BUFFER_SIZE | The 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_READY | The ATA command could not be sent because there are too many ATA commands already queued. The caller may retry again later. |
EFI_DEVICE_ERROR | A 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] | This | The PPI instance pointer. |
[in,out] | Port | On 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_SUCCESS | The next port number on the ATA controller was returned in Port. |
EFI_NOT_FOUND | There are no more ports on this ATA controller. |
EFI_INVALID_PARAMETER | Port 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] | This | The PPI instance pointer. |
[in] | Port | The port number present on the ATA controller. |
[in,out] | PortMultiplierPort | On 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_SUCCESS | The port multiplier port number of the next ATA device on the port of the ATA controller was returned in PortMultiplierPort. |
EFI_NOT_FOUND | There are no more ATA devices on this port of the ATA controller. |
EFI_INVALID_PARAMETER | PortMultiplierPort 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] | This | The PPI instance pointer. |
[out] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The device path of the ATA host controller has been successfully returned. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_OUT_OF_RESOURCES | Not enough resource to return the device path. |
This service enables submitting commands via Ipmi.
- Parameters
-
[in] | This | This point for PEI_IPMI_PPI structure. |
[in] | NetFunction | Net function of the command. |
[in] | Command | IPMI Command. |
[in] | RequestData | Command Request Data. |
[in] | RequestDataSize | Size of Command Request Data. |
[out] | ResponseData | Command Response Data. The completion code is the first byte of response data. |
[in,out] | ResponseDataSize | Size of Command Response Data. |
- Return values
-
EFI_SUCCESS | The command byte stream was successfully submit to the device and a response was successfully received. |
EFI_NOT_FOUND | The command was not successfully sent to the device or a response was not successfully received from the device. |
EFI_NOT_READY | Ipmi Device is not ready for Ipmi command access. |
EFI_DEVICE_ERROR | Ipmi Device hardware error. |
EFI_TIMEOUT | The command time out. |
EFI_UNSUPPORTED | The command was not successfully sent to the device. |
EFI_OUT_OF_RESOURCES | The resource allcation is out of resource or data size error. |
Gets the count of storage security devices that one specific driver detects.
- Parameters
-
[in] | This | The PPI instance pointer. |
[out] | NumberofDevices | The number of storage security devices discovered. |
- Return values
-
EFI_SUCCESS | The operation performed successfully. |
EFI_INVALID_PARAMETER | The parameters are invalid. |
Gets the device path of a specific storage security device.
- Parameters
-
[in] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | DevicePathLength | The length of the device path in bytes specified by DevicePath. |
[out] | DevicePath | The 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_SUCCESS | The operation succeeds. |
EFI_INVALID_PARAMETER | DevicePathLength or DevicePath is NULL. |
EFI_NOT_FOUND | The specified storage security device not found. |
EFI_OUT_OF_RESOURCES | The 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | Specifies 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] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[out] | PayloadBuffer | A 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] | PayloadTransferSize | A pointer to a buffer to store the size in bytes of the data written to the payload data buffer. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_WARN_BUFFER_TOO_SMALL | The PayloadBufferSize was too small to store the available data from the device. The PayloadBuffer contains the truncated data. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A 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] | This | The PPI instance pointer. |
[in] | DeviceIndex | The ID of the device. |
[in] | Timeout | The 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] | SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
[in] | SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
[in] | PayloadBufferSize | Size in bytes of the payload data buffer. |
[in] | PayloadBuffer | A pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. |
- Return values
-
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_UNSUPPORTED | The given DeviceIndex does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_INVALID_PARAMETER | The PayloadBuffer is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A timeout occurred while waiting for the security protocol command to execute. |
Invokes SMI activation from either the preboot or runtime environment.
- Parameters
-
PeiServices | General purpose services available to every PEIM. |
This | The PEI_SMM_CONTROL_PPI instance. |
ArgumentBuffer | The optional sized data to pass into the protocol activation. |
ArgumentBufferSize | The optional size of the data. |
Periodic | An optional mechanism to periodically repeat activation. |
ActivationInterval | An optional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically. |
- Return values
-
EFI_SUCCESS | The SMI/PMI has been engendered. |
EFI_DEVICE_ERROR | The timing is unsupported. |
EFI_INVALID_PARAMETER | The activation period is unsupported. |
EFI_NOT_STARTED | The SMM base service has not been initialized. |
Clears any system state that was created in response to the Active call.
- Parameters
-
PeiServices | General purpose services available to every PEIM. |
This | The PEI_SMM_CONTROL_PPI instance. |
Periodic | Optional parameter to repeat at this period one time or, if the Periodic Boolean is set, periodically. |
- Return values
-
EFI_SUCCESS | The SMI/PMI has been engendered. |
EFI_DEVICE_ERROR | The source could not be cleared. |
EFI_INVALID_PARAMETER | The 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
-
This | The protocol instance |
HandlerGuid | The GUID to identify the type of the handler. For the SmmChildDispatch protocol, the HandlerGuid must be the GUID of SmmChildDispatch protocol. |
Handler | The SMI handler. |
CallerAddress | The address of the module who registers the SMI handler. |
Context | The context of the SMI handler. For the SmmChildDispatch protocol, the Context must match the one defined for SmmChildDispatch protocol. |
ContextSize | The size of the context in bytes. For the SmmChildDispatch protocol, the Context must match the one defined for SmmChildDispatch protocol. |
- Return values
-
EFI_SUCCESS | The information is recorded. |
EFI_OUT_OF_RESOURCES | There 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
-
This | The protocol instance |
HandlerGuid | The GUID to identify the type of the handler. For the SmmChildDispatch protocol, the HandlerGuid must be the GUID of SmmChildDispatch protocol. |
Handler | The SMI handler. |
Context | The context of the SMI handler. If it is NOT NULL, it will be used to check what is registered. |
ContextSize | The size of the context in bytes. If Context is NOT NULL, it will be used to check what is registered. |
- Return values
-
EFI_SUCCESS | The original record is removed. |
EFI_NOT_FOUND | There is no record for the HandlerGuid and handler. |
Get memory profile recording state.
- Parameters
-
[in] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[out] | RecordingState | Recording 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] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[in] | RecordingState | Recording state. |
- Returns
- EFI_SUCCESS Set memory profile recording state successfully.
-
EFI_UNSUPPORTED Memory profile is unsupported.
Record memory profile of multilevel caller.
- Parameters
-
[in] | This | The EDKII_MEMORY_PROFILE_PROTOCOL instance. |
[in] | CallerAddress | Address of caller. |
[in] | Action | Memory profile action. |
[in] | MemoryType | Memory type. EfiMaxMemoryType means the MemoryType is unknown. |
[in] | Buffer | Buffer address. |
[in] | Size | Buffer size. |
[in] | ActionString | String 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] | Handler | Pointer to the check handler. |
- Return values
-
EFI_SUCCESS | The SetVariable check handler was registered successfully. |
EFI_INVALID_PARAMETER | Handler is NULL. |
EFI_ACCESS_DENIED | EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled. |
EFI_OUT_OF_RESOURCES | There is not enough resource for the SetVariable check handler register request. |
EFI_UNSUPPORTED | This 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] | Name | Pointer to the variable name. |
[in] | Guid | Pointer to the vendor GUID. |
[in] | VariableProperty | Pointer to the input variable property. |
- Return values
-
EFI_SUCCESS | The property of variable specified by the Name and Guid was set successfully. |
EFI_INVALID_PARAMETER | Name, Guid or VariableProperty is NULL, or Name is an empty string, or the fields of VariableProperty are not valid. |
EFI_ACCESS_DENIED | EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled. |
EFI_OUT_OF_RESOURCES | There is not enough resource for the variable property set request. |
Variable property get.
- Parameters
-
[in] | Name | Pointer to the variable name. |
[in] | Guid | Pointer to the vendor GUID. |
[out] | VariableProperty | Pointer to the output variable property. |
- Return values
-
EFI_SUCCESS | The property of variable specified by the Name and Guid was got successfully. |
EFI_INVALID_PARAMETER | Name, Guid or VariableProperty is NULL, or Name is an empty string. |
EFI_NOT_FOUND | The property of variable specified by the Name and Guid was not found. |
This service enables submitting commands via Ipmi.
- Parameters
-
[in] | This | This point for IPMI_PROTOCOL structure. |
[in] | NetFunction | Net function of the command. |
[in] | Command | IPMI Command. |
[in] | RequestData | Command Request Data. |
[in] | RequestDataSize | Size of Command Request Data. |
[out] | ResponseData | Command Response Data. The completion code is the first byte of response data. |
[in,out] | ResponseDataSize | Size of Command Response Data. |
- Return values
-
EFI_SUCCESS | The command byte stream was successfully submit to the device and a response was successfully received. |
EFI_NOT_FOUND | The command was not successfully sent to the device or a response was not successfully received from the device. |
EFI_NOT_READY | Ipmi Device is not ready for Ipmi command access. |
EFI_DEVICE_ERROR | Ipmi Device hardware error. |
EFI_TIMEOUT | The command time out. |
EFI_UNSUPPORTED | The command was not successfully sent to the device. |
EFI_OUT_OF_RESOURCES | The resource allcation is out of resource or data size error. |
Execute UIC command
- Parameters
-
[in] | This | Pointer to driver interface produced by the UFS controller. |
[in,out] | UicCommand | Descriptor of the command that will be executed. |
- Return values
-
EFI_SUCCESS | Command executed successfully. |
EFI_INVALID_PARAMETER | This or UicCommand is NULL. |
Others | Command failed to execute. |
Allows platform protocol to override host controller information
- Parameters
-
[in] | ControllerHandle | Handle of the UFS controller. |
[in,out] | HcInfo | Pointer EDKII_UFS_HC_INFO associated with host controller. |
- Return values
-
EFI_SUCCESS | Function completed successfully. |
EFI_INVALID_PARAMETER | HcInfo is NULL. |
Others | Function failed to complete. |
Callback function for platform driver.
- Parameters
-
[in] | ControllerHandle | Handle of the UFS controller. |
[in] | CallbackPhase | Specifies when the platform protocol is called |
[in,out] | CallbackData | Data 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_SUCCESS | Override function completed successfully. |
EFI_INVALID_PARAMETER | CallbackPhase is invalid or CallbackData is NULL when phase expects valid data. |
Others | Function 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] | This | This pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure |
[in] | ImageBase | The base address in memory of the PE/COFF image |
[in] | ImageSize | The size in memory of the PE/COFF image |
[in,out] | EntryPoint | The entry point of the PE/COFF image. Passed by reference so that the emulator may modify it. |
- Return values
-
EFI_SUCCESS | The image was registered with the emulator and can be started as usual. |
other | The 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] | This | This pointer for EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL structure |
[in] | ImageBase | The base address in memory of the PE/COFF image |
- Return values
-
EFI_SUCCESS | The image was unregistered with the emulator. |
other | Image could not be unloaded. |
Trig Exception on EBC VM.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL structure. |
[in] | VmPtr | A pointer to a VM context. |
[in] | ExceptionType | Exception to be trigged. |
- Return values
-
EFI_UNSUPPORTED | No support for it. |
EFI_SUCCESS | Exception 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] | This | A pointer to the EFI_EBC_SIMPLE_DEBUGGER_PROTOCOL structure. |
[in] | ConfigId | ID to be configured. |
[in] | ConfigValue | Value to be set. |
- Return values
-
EFI_UNSUPPORTED | No support for it. |
EFI_SUCCESS | Configure 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
-
RootDirectory | Pointer to the root directory. |
FileType | The file type need to choose. |
ChooseHandler | Function pointer to the extra task need to do after choose one file. |
File | Return the device path for the last time chosed file. |
- Return values
-
EFI_SUCESS | Choose the file success. |
Other | errors Choose the file failed. |
Execute the action requested by the Action parameter.
- Parameters
-
[in] | Action | Execute the request action. |
[in] | DefaultId | The default Id info when need to load default value. |
- Return values
-
EFI_SUCCESS | Execute the request action succss. |
Override function for SDHCI capability bits
- Parameters
-
[in] | ControllerHandle | The EFI_HANDLE of the controller. |
[in] | Slot | The 0 based slot index. |
[in,out] | SdMmcHcSlotCapability | The SDHCI capability structure. |
[in,out] | BaseClkFreq | The base clock frequency value that optionally can be updated. |
- Return values
-
EFI_SUCCESS | The override function completed successfully. |
EFI_NOT_FOUND | The specified controller or slot does not exist. |
EFI_INVALID_PARAMETER | SdMmcHcSlotCapability is NULL |
Override function for SDHCI controller operations
- Parameters
-
[in] | ControllerHandle | The EFI_HANDLE of the controller. |
[in] | Slot | The 0 based slot index. |
[in] | PhaseType | The type of operation and whether the hook is invoked right before (pre) or right after (post) |
[in,out] | PhaseData | The pointer to a phase-specific data. |
- Return values
-
EFI_SUCCESS | The override function completed successfully. |
EFI_NOT_FOUND | The specified controller or slot does not exist. |
EFI_INVALID_PARAMETER | PhaseType 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] | This | The EDKII_VARIABLE_LOCK_PROTOCOL instance. |
[in] | VariableName | A pointer to the variable name that will be made read-only subsequently. |
[in] | VendorGuid | A pointer to the vendor GUID that will be made read-only subsequently. |
- Return values
-
EFI_SUCCESS | The variable specified by the VariableName and the VendorGuid was marked as pending to be read-only. |
EFI_INVALID_PARAMETER | VariableName or VendorGuid is NULL. Or VariableName is an empty string. |
EFI_ACCESS_DENIED | EFI_END_OF_DXE_EVENT_GROUP_GUID or EFI_EVENT_GROUP_READY_TO_BOOT has already been signaled. |
EFI_OUT_OF_RESOURCES | There 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] | Scope | Scope level to be set. |
- Return values
-
EFI_SUCCESS | Scope is set correctly. |
EFI_INVALID_PARAMETER | Scope is not the valid value specified in BROWSER_SETTING_SCOPE. |
EFI_UNSPPORTED | Scope 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] | KeyData | A 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] | Action | Action value that describes what action will be trigged when the hot key is pressed. |
[in] | DefaultId | Specifies the type of defaults to retrieve, which is only for DEFAULT action. |
[in] | HelpString | Help string that describes the hot key information. Its value may be NULL for the unregistered hot key. |
- Return values
-
EFI_SUCCESS | Hot key is registered or unregistered. |
EFI_INVALID_PARAMETER | KeyData 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] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[in] | VmPtr | A pointer to a VM context. |
[in,out] | InstructionCount | A 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_UNSUPPORTED | At least one of the opcodes is not supported. |
EFI_SUCCESS | All of the instructions are executed successfully. |
Convert AsmText to the instruction. This function is only used for test purposes.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[in] | AsmText | A pointer to EBC ASM text code. |
[out] | Buffer | Buffer to store the instruction. |
[out] | BufferLen | Size of buffer that is required to store data. |
- Return values
-
EFI_UNSUPPORTED | This functionality is unsupported. |
EFI_SUCCESS | Successfully convert AsmText to the instruction. |
Dump the executed instruction. This function is only used for test purposes.
- Parameters
-
[in] | This | A pointer to the EFI_EBC_VM_TEST_PROTOCOL structure. |
[out] | AsmText | Contain the disasm text. |
[out] | Buffer | Buffer to store the instruction. |
[out] | BufferLen | Size of buffer that is required to store data. |
- Return values
-
EFI_UNSUPPORTED | This functionality is unsupported. |
EFI_SUCCESS | Successfully dump the executed instruction. |
Perform Password check. Passwork may be encrypted by driver that requires the specific check.
- Parameters
-
Form | Form where Password Statement is in. |
Statement | Password statement |
PasswordString | Password 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
-
FormData | Form Data to be shown. |
UserInputData | User input data. |
- Return values
-
EFI_SUCCESS | Form Data is shown, and user input is got. |