ICorDebugVariableHome インターフェイス

関数のローカル変数または引数を表します。

メソッド

メソッド 説明
GetArgumentIndex メソッド 関数の引数のインデックスを取得します。
GetCode メソッド この ICorDebugVariableHome オブジェクトが格納されている "ICorDebugCode" インスタンスを取得します。
GetLiveRange メソッド この変数がライブであるネイティブ範囲を取得します。
GetLocationType メソッド 変数の元の場所の型を取得します。
GetOffset メソッド 変数の基底レジスタからのオフセットを取得します。
GetRegister メソッド 場所の種類が VLT_REGISTER の変数が格納されているレジスタと、場所の種類が VLT_REGISTER_RELATIVE の変数の基底レジスタを取得します。
GetSlotIndex メソッド ローカル変数のマネージド スロット インデックスを取得します。

次のコード フラグメントでは、pCode4 という名前の ICorDebugCode4 オブジェクトを使用します。

ICorDebugCode4 *pCode4 = NULL;  
pCode->QueryInterface(IID_ICorDebugCode4, &pCode4);  
  
ICorDebugVariableEnum *pVarLocEnum = NULL;  
pCode4->EnumerateVariableHomes(&pVarLocEnum);  
  
// retrieve local variables and arguments  
ULONG celt = 0;  
pVarLocEnum->GetCount(&celt);  
ICorDebugVariableHome **homes = new ICorDebugVariableHome *[celt];  
ULONG celtFetched = 0;  
pVarLocEnum->Next(celt, homes, &celtFetched);  
  
for (int i = 0; i < celtFetched; i++)  
{  
    VariableLocationType locType = VLT_INVALID;  
    homes[i].GetLocationType(&locType);  
    switch (locType)  
    {  
    case VLT_REGISTER:  
        CorDebugRegister register = 0;  
        locals[i].GetRegister(&register);  
        // now we know which register it is in  
        break;  
    case VLT_REGISTER_RELATIVE:  
        CorDebugRegister baseRegister = 0;  
        LONG offset = 0;  
        locals[i].GetRegister(&register);  
        locals[i].GetOffset(&offset);  
        // now we know the register-relative offset  
        break;  
    case VLT_INVALID:  
        // handle case where we can't access the location  
        break;  
    }  
}  

必要条件

:システム要件」を参照してください。

ヘッダー: CorDebug.idl、CorDebug.h

ライブラリ: CorGuids.lib

.NET Framework のバージョン: 4.6.2 以降で使用可能

関連項目