edk2/MdeModulePkg/Include/Library/IpmiCommandLib.h

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

737 lines
23 KiB
C
Raw Normal View History

/** @file
This library abstract how to send/receive IPMI command.
Copyright (c) 2018-2021, Intel Corporation. All rights reserved.<BR>
Copyright (C) 2023 - 2026, Advanced Micro Devices, Inc. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
MdeModulePkg: Replace include guards with #pragma once Replace traditional `#ifndef`/`#define`/`#endif` include guards with `#pragma` once. `#pragma once` is a widely supported preprocessor directive that prevents header files from being included multiple times. It is supported by all toolchains used to build edk2: GCC, Clang/LLVM, and MSVC. Compared to macro-based include guards, `#pragma once`: - Eliminates the risk of macro name collisions or copy/paste errors where two headers inadvertently use the same guard macro. - Eliminate inconsistency in the way include guard macros are named (e.g., some files use `__FILE_H__`, others use `FILE_H_`, etc.). - Reduces boilerplate (three lines replaced by one). - Avoids polluting the macro namespace with guard symbols. - Can improve build times as the preprocessor can skip re-opening the file entirely, rather than re-reading it to find the matching `#endif` ("multiple-include optimization"). - Note that some compilers may already optimize traditional include guards, by recognzining the idiomatic pattern. This change is made acknowledging that overall portability of the code will technically be reduced, as `#pragma once` is not part of the C/C++ standards. However, this is considered acceptable given: 1. edk2 already defines a subset of supported compilers in BaseTools/Conf/tools_def.template, all of which have supported `#pragma once` for over two decades. 2. There have been concerns raised to the project about inconsistent include guard naming and potential macro collisions. Approximate compiler support dates: - MSVC: Supported since Visual C++ 4.2 (1996) - GCC: Supported since 3.4 (2004) (http://gnu.ist.utl.pt/software/gcc/gcc-3.4/changes.html) - Clang (LLVM based): Since initial release in 2007 Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
2026-02-03 13:48:28 -05:00
#pragma once
#include <Uefi.h>
#include <IndustryStandard/Ipmi.h>
//
// IPMI NetFnApp
//
/**
This function gets the IPMI Device ID.
@param[out] DeviceId Get device ID response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetDeviceId (
OUT IPMI_GET_DEVICE_ID_RESPONSE *DeviceId
);
/**
This function gets the self-test result.
@param[out] SelfTestResult Self test command response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetSelfTestResult (
OUT IPMI_SELF_TEST_RESULT_RESPONSE *SelfTestResult
);
/**
This function resets watchdog timer.
@param[out] CompletionCode The command completion code.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiResetWatchdogTimer (
OUT UINT8 *CompletionCode
);
/**
This function sets watchdog timer.
@param[in] SetWatchdogTimer Set watchdog timer request.
@param[out] CompletionCode The command completion code.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiSetWatchdogTimer (
IN IPMI_SET_WATCHDOG_TIMER_REQUEST *SetWatchdogTimer,
OUT UINT8 *CompletionCode
);
/**
This function gets watchdog timer.
@param[out] GetWatchdogTimer Get watchdog timer response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetWatchdogTimer (
OUT IPMI_GET_WATCHDOG_TIMER_RESPONSE *GetWatchdogTimer
);
/**
This function sets BMC global enables.
@param[in] SetBmcGlobalEnables Set BMC global enables command request.
@param[out] CompletionCode The command completion code.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiSetBmcGlobalEnables (
IN IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST *SetBmcGlobalEnables,
OUT UINT8 *CompletionCode
);
/**
This function gets BMC global enables.
@param[out] GetBmcGlobalEnables Get BMC global enables command response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetBmcGlobalEnables (
OUT IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE *GetBmcGlobalEnables
);
/**
This function clears message flag.
@param[in] ClearMessageFlagsRequest Clear message flags command request.
@param[out] CompletionCode The command completion code.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiClearMessageFlags (
IN IPMI_CLEAR_MESSAGE_FLAGS_REQUEST *ClearMessageFlagsRequest,
OUT UINT8 *CompletionCode
);
/**
This function gets message flag.
@param[out] GetMessageFlagsResponse Get message flags response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetMessageFlags (
OUT IPMI_GET_MESSAGE_FLAGS_RESPONSE *GetMessageFlagsResponse
);
/**
This function gets message.
@param[out] GetMessageResponse Get message command response.
@param[in,out] GetMessageResponseSize The size of get message response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetMessage (
OUT IPMI_GET_MESSAGE_RESPONSE *GetMessageResponse,
IN OUT UINT32 *GetMessageResponseSize
);
/**
This function sends message.
@param[in] SendMessageRequest The send message command request.
@param[in] SendMessageRequestSize The size of the send message command request.
@param[out] SendMessageResponse The send message command response.
@param[in,out] SendMessageResponseSize The size of the send message command response.
When input, the expected size of response.
When output, the actual size of response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiSendMessage (
IN IPMI_SEND_MESSAGE_REQUEST *SendMessageRequest,
IN UINT32 SendMessageRequestSize,
OUT IPMI_SEND_MESSAGE_RESPONSE *SendMessageResponse,
IN OUT UINT32 *SendMessageResponseSize
);
/**
This function gets the system UUID.
@param[out] SystemGuid The pointer to retrieve system UUID.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Others Other errors.
**/
EFI_STATUS
EFIAPI
IpmiGetSystemUuid (
OUT EFI_GUID *SystemGuid
);
/**
This function gets the channel information.
@param[in] GetChannelInfoRequest The get channel information request.
@param[in] GetChannelInfoResponse The get channel information response.
@param[in,out] GetChannelInfoResponseSize When input, the expected size of response.
When output, the exact size of the returned
response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetChannelInfo (
IN IPMI_GET_CHANNEL_INFO_REQUEST *GetChannelInfoRequest,
OUT IPMI_GET_CHANNEL_INFO_RESPONSE *GetChannelInfoResponse,
OUT UINT32 *GetChannelInfoResponseSize
);
/**
This function gets system interface capability
@param[in] InterfaceCapabilityRequest Get system interface capability request.
@param[out] InterfaceCapabilityResponse The response of system interface capability.
@retval EFI_SUCCESS Command is sent successfully.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetSystemInterfaceCapability (
IN IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_REQUEST *InterfaceCapabilityRequest,
OUT IPMI_GET_SYSTEM_INTERFACE_CAPABILITIES_RESPONSE *InterfaceCapabilityResponse
);
//
// IPMI NetFnTransport
//
/**
This function activates SOL
@param[in] SolActivatingRequest SOL activating request.
@param[out] CompletionCode The command completion code.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiSolActivating (
IN IPMI_SOL_ACTIVATING_REQUEST *SolActivatingRequest,
OUT UINT8 *CompletionCode
);
/**
This function sets SOL configuration parameters.
@param[in] SetConfigurationParametersRequest Set SOL configuration parameters
command request.
@param[in] SetConfigurationParametersRequestSize Size of the set SOL configuration
parameters command request.
@param[out] CompletionCode The command completion code.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiSetSolConfigurationParameters (
IN IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST *SetConfigurationParametersRequest,
IN UINT32 SetConfigurationParametersRequestSize,
OUT UINT8 *CompletionCode
);
/**
This function gets SOL configuration parameters.
@param[in] GetConfigurationParametersRequest Get SOL configuration parameters
command request.
@param[out] GetConfigurationParametersResponse Get SOL configuration parameters
response.
@param[in,out] GetConfigurationParametersResponseSize When input, the size of the expected
response.
When output, the exact size of
expect response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetSolConfigurationParameters (
IN IPMI_GET_SOL_CONFIGURATION_PARAMETERS_REQUEST *GetConfigurationParametersRequest,
OUT IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE *GetConfigurationParametersResponse,
IN OUT UINT32 *GetConfigurationParametersResponseSize
);
/**
This function gets the LAN configuration parameter.
@param[in] GetLanConfigurationParametersRequest Get LAN configuration parameters command request.
@param[in] GetLanConfigurationParametersResponse The response of the get LAN configuration parameters.
@param[in,out] GetLanConfigurationParametersSize When input, the expected size of response data.
When out, the exact size of response data.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetLanConfigurationParameters (
IN IPMI_GET_LAN_CONFIGURATION_PARAMETERS_REQUEST *GetLanConfigurationParametersRequest,
OUT IPMI_GET_LAN_CONFIGURATION_PARAMETERS_RESPONSE *GetLanConfigurationParametersResponse,
IN OUT UINT32 *GetLanConfigurationParametersSize
);
//
// IPMI NetFnChassis
//
/**
This function gets chassis capability.
@param[out] GetChassisCapabilitiesResponse Gets chassis capability command response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetChassisCapabilities (
OUT IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE *GetChassisCapabilitiesResponse
);
/**
This function gets chassis status.
@param[out] GetChassisCapabilitiesResponse The get chassis status command response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetChassisStatus (
OUT IPMI_GET_CHASSIS_STATUS_RESPONSE *GetChassisStatusResponse
);
/**
This function sends chassis control request.
@param[in] ChassisControlRequest The chassis control request.
@param[out] CompletionCode The command completion code.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiChassisControl (
IN IPMI_CHASSIS_CONTROL_REQUEST *ChassisControlRequest,
OUT UINT8 *CompletionCode
);
/**
This function sets power restore policy.
@param[in] SetPowerRestireRequest The set power restore policy control
command request.
@param[out] SetPowerRestireResponse The response of power restore policy.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiSetPowerRestorePolicy (
IN IPMI_SET_POWER_RESTORE_POLICY_REQUEST *SetPowerRestireRequest,
OUT IPMI_SET_POWER_RESTORE_POLICY_RESPONSE *SetPowerRestireResponse
);
//
// IPMI NetFnStorage
//
/**
This function sets system boot option.
@param[in] BootOptionsRequest Set system boot option request.
@param[out] BootOptionsResponse The response of set system boot
option request.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiSetSystemBootOptions (
IN IPMI_SET_BOOT_OPTIONS_REQUEST *BootOptionsRequest,
OUT IPMI_SET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse
);
/**
This function gets system boot option.
@param[in] BootOptionsRequest Get system boot option request.
@param[out] BootOptionsResponse The response of get system boot
option request.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetSystemBootOptions (
IN IPMI_GET_BOOT_OPTIONS_REQUEST *BootOptionsRequest,
OUT IPMI_GET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse
);
/**
Write data to the IPMI boot initiator mailbox helper function.
This function calls the IpmiSetSystemBootOptions function with
parameter 7 to write a maximum of 16 bytes to a selector block
in the boot initiator mailbox.
@param[in] SetSelector Set selector to write to
@param[in] Data Data to write to the mailbox
@param[in] Size Size of Data buffer in bytes
@retval EFI_SUCCESS On successfull IPMI transaction
@retval EFI_INVALID Data or Size is not valid
@retval Other On failing IPMI transaction
**/
EFI_STATUS
EFIAPI
IpmiWriteBootInitiatorMailbox (
IN UINT8 SetSelector,
IN UINT8 *Data,
IN UINTN Size
);
/**
Read data from the IPMI boot initiator mailbox helper function.
This function calls the IpmiGetSystemBootOptions function with
parameter 7 to read a 16 byte selector block in the boot initiator
mailbox. ReadData is a 16 byte array and is required to be freed
by the caller.
@param[in] SetSelector Set selector to read from
@param[out] ReadData Data read from the Boot Initiator Mailbox
@retval EFI_SUCCESS On successfull IPMI transaction
@retval EFI_INVALID ReadData is NULL
@retval Other On failing IPMI transaction
**/
EFI_STATUS
EFIAPI
IpmiReadBootInitiatorMailbox (
IN UINT8 SetSelector,
OUT UINT8 **ReadData
);
/**
This function gets FRU inventory area info.
@param[in] GetFruInventoryAreaInfoRequest Get FRU inventory area command request.
@param[out] GetFruInventoryAreaInfoResponse get FRU inventory area command response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetFruInventoryAreaInfo (
IN IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST *GetFruInventoryAreaInfoRequest,
OUT IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE *GetFruInventoryAreaInfoResponse
);
/**
This function reads FRU data.
@param[in] ReadFruDataRequest Read FRU data command request.
@param[out] ReadFruDataResponse Read FRU data command response.
@param[in,out] ReadFruDataResponseSize Size of the read FRU data response.
When input, the expected size of response data.
When out, the exact size of response data.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiReadFruData (
IN IPMI_READ_FRU_DATA_REQUEST *ReadFruDataRequest,
OUT IPMI_READ_FRU_DATA_RESPONSE *ReadFruDataResponse,
IN OUT UINT32 *ReadFruDataResponseSize
);
/**
This function gets chassis capability.
@param[in] WriteFruDataRequest Write FRU data command request.
@param[in] WriteFruDataRequestSize Size of the write FRU data command request.
@param[out] WriteFruDataResponse Write FRU data response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiWriteFruData (
IN IPMI_WRITE_FRU_DATA_REQUEST *WriteFruDataRequest,
IN UINT32 WriteFruDataRequestSize,
OUT IPMI_WRITE_FRU_DATA_RESPONSE *WriteFruDataResponse
);
/**
This function gets SEL information.
@param[out] GetSelInfoResponse Get SEL information command response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetSelInfo (
OUT IPMI_GET_SEL_INFO_RESPONSE *GetSelInfoResponse
);
/**
This function gets SEL entry.
@param[in] GetSelEntryRequest Get SEL entry command request.
@param[out] GetSelEntryResponse Get SEL entry command response.
@param[in,out] GetSelEntryResponseSize Size of Get SEL entry request.
When input, the expected size of response data.
When out, the exact size of response data.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetSelEntry (
IN IPMI_GET_SEL_ENTRY_REQUEST *GetSelEntryRequest,
OUT IPMI_GET_SEL_ENTRY_RESPONSE *GetSelEntryResponse,
IN OUT UINT32 *GetSelEntryResponseSize
);
/**
This function adds SEL entry.
@param[in] AddSelEntryRequest Add SEL entry command request.
@param[out] AddSelEntryResponse Add SEL entry command response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiAddSelEntry (
IN IPMI_ADD_SEL_ENTRY_REQUEST *AddSelEntryRequest,
OUT IPMI_ADD_SEL_ENTRY_RESPONSE *AddSelEntryResponse
);
/**
This function partially adds SEL entry.
@param[in] PartialAddSelEntryRequest Partial add SEL entry command request.
@param[in] PartialAddSelEntryRequestSize Size of partial add SEL entry command request.
@param[out] PartialAddSelEntryResponse Partial add SEL entry command response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiPartialAddSelEntry (
IN IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST *PartialAddSelEntryRequest,
IN UINT32 PartialAddSelEntryRequestSize,
OUT IPMI_PARTIAL_ADD_SEL_ENTRY_RESPONSE *PartialAddSelEntryResponse
);
/**
This function clears SEL entry.
@param[in] ClearSelRequest Clear SEL command request.
@param[out] ClearSelResponse Clear SEL command response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiClearSel (
IN IPMI_CLEAR_SEL_REQUEST *ClearSelRequest,
OUT IPMI_CLEAR_SEL_RESPONSE *ClearSelResponse
);
/**
This function gets SEL time.
@param[out] GetSelTimeResponse Get SEL time command response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetSelTime (
OUT IPMI_GET_SEL_TIME_RESPONSE *GetSelTimeResponse
);
/**
This function sets SEL time.
@param[in] SetSelTimeRequest Set SEL time command request.
@param[out] CompletionCode Command completion code.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiSetSelTime (
IN IPMI_SET_SEL_TIME_REQUEST *SetSelTimeRequest,
OUT UINT8 *CompletionCode
);
/**
This function gets SDR repository information.
@param[out] GetSdrRepositoryInfoResp Get SDR repository response.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetSdrRepositoryInfo (
OUT IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE *GetSdrRepositoryInfoResp
);
/**
This function gets SDR
@param[in] GetSdrRequest Get SDR resquest.
@param[out] GetSdrResponse Get SDR response.
@param[in,out] GetSdrResponseSize The size of get SDR response.
When input, the expected size of response data.
When out, the exact size of response data.
@retval EFI_SUCCESS Command is sent successfully.
@retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.
@retval Other Failure.
**/
EFI_STATUS
EFIAPI
IpmiGetSdr (
IN IPMI_GET_SDR_REQUEST *GetSdrRequest,
OUT IPMI_GET_SDR_RESPONSE *GetSdrResponse,
IN OUT UINT32 *GetSdrResponseSize
);