Edit

Share via


IDiaStackWalkHelper3::get_registerValue

Retrieves the value of the specified register.

Syntax

HRESULT get_registerValue(
    DWORD index,
    DWORD cbData,
    DWORD* pcbData,
    BYTE* pbData
);

Parameters

index

[in] A value from the CV_HREG_e enumeration specifying which register to get the value from. This parameter value is primarily intended for the ARM64 SVE registers.

cbData

[in] Size, in bytes, of the buffer pointed to by pbData. May be 0 when pbData is nullptr.

pcbData

[out] Receives the size, in bytes, of the register value. When pbData is nullptr and cbData is 0, pcbData is set to the required size for the register value.

pbData

[out, optional] Caller-allocated buffer that receives the register value. May be nullptr to query the required size only.

Return Value

If successful, returns S_OK; otherwise, returns an error code.

Remarks

You can pass pbData = nullptr with cbData = 0 to query only the required size of the register value. The method sets pcbData to the number of bytes needed. Allocate a buffer of that size and call again to retrieve the value.

Register sizes can differ between CPU architectures. This method supports variable-sized registers, including large vector registers such as ARM64 SVE.

For registers 64-bits or less (for example, 1-8 bytes), use get_registerValue and put_registerValue in IDiaStackWalkHelper.

See also