次の方法で共有


IDebugComPlusSymbolProvider::GetArrayTypeFromAddress

デバッグ アドレスを指定して、指定した配列に関する型情報を取得します。

構文

int GetArrayTypeFromAddress(
    IDebugAddress   pAddress,
    int[]           pSig,
    uint            dwSigLength,
    out IDebugField ppField
);

パラメーター

pAddress
[in] IDebugAddress インターフェイスによって表されるデバッグ アドレス。

pSig
[in] 調査対象の配列。

dwSigLength
[in] pSig 配列のバイト長。

ppField
[out] IDebugClassField インターフェイスによって表される配列型を返します。

戻り値

成功した場合は、S_OK を返します。それ以外の場合は、エラー コードを返します。

次の例は、IDebugComPlusSymbolProvider インターフェイスを公開する CDebugSymbolProvider オブジェクトにこのメソッドを実装する方法を示しています。

HRESULT CDebugSymbolProvider::GetArrayTypeFromAddress(
    IDebugAddress *pAddress,
    BYTE *pSig,
    DWORD dwSigLength,
    IDebugField **ppField)
{
    HRESULT hr = E_FAIL;
    CDEBUG_ADDRESS da;
    CDebugGenericParamScope* pGenScope = NULL;

    METHOD_ENTRY( CDebugDynamicFieldSymbol::GetArrayTypeFromAddress );

    ASSERT(IsValidObjectPtr(this, CDebugSymbolProvider));
    ASSERT(IsValidWritePtr(ppField, IDebugField*));

    IfFailGo( pAddress->GetAddress(&da) );

    if ( S_OK == hr )
    {
        IfNullGo( pGenScope = new CDebugGenericParamScope(da.GetModule(), da.tokClass, da.GetMethod()), E_OUTOFMEMORY );

        IfFailGo( this->CreateType((const COR_SIGNATURE*)(pSig), dwSigLength, da.GetModule(), mdMethodDefNil, pGenScope, ppField) );
    }

Error:

    METHOD_EXIT( CDebugDynamicFieldSymbol::GetArrayTypeFromAddress, hr );
    RELEASE( pGenScope );
    return hr;
}

関連項目