指定したレジスタの値を取得します。
構文
HRESULT get_registerValue(
DWORD index,
DWORD cbData,
DWORD* pcbData,
BYTE* pbData
);
パラメーター
index
[in]値を取得するレジスタを指定する CV_HREG_e 列挙体の値。 このパラメーター値は、主に ARM64 SVE レジスタを対象としています。
cbData
[in] pbDataが指すバッファーのサイズ (バイト単位)。
pbDataがnullptrされている場合は、0できます。
pcbData
[out]レジスタ値のサイズ (バイト単位) を受け取ります。
pbDataがnullptrされ、cbDataが0されると、pcbDataはレジスタ値に必要なサイズに設定されます。
pbData
[出力、省略可能]レジスタ値を受け取る呼び出し元によって割り当てられたバッファー。 必要なサイズのみを照会する nullptr があります。
戻り値
成功した場合は S_OKを返し、それ以外の場合はエラー コードを返します。
注釈
cbData = 0でpbData = nullptrを渡して、レジスタ値の必要なサイズのみを照会できます。 このメソッドは、 pcbData に必要なバイト数を設定します。 そのサイズのバッファーを割り当て、もう一度呼び出して値を取得します。
レジスタ のサイズは、CPU アーキテクチャによって異なる場合があります。 このメソッドは、ARM64 SVE などの大きなベクター レジスタを含む、可変サイズのレジスタをサポートします。
レジスタが 64 ビット以下 (1 から 8 バイトなど) の場合は、IDiaStackWalkHelper でget_registerValueとput_registerValueを使用します。