IDebugGenericParamField::GetOwner
擷取這個泛用參數的型別或方法擁有者。
HRESULT GetOwner(
IDebugField** ppOwner
);
int GetOwner(
out IDebugField ppOwner
);
參數
- ppOwner
[] out傳回IDebugField擁有這個泛用參數的物件。
傳回值
如果成功的話,會傳回S_OK。 否則,會傳回錯誤碼。
範例
下列範例會示範如何實作這個方法,如 CDebugGenericParamFieldType 物件,公開 (expose) IDebugGenericParamField介面。
HRESULT CDebugGenericParamFieldType::GetOwner(IDebugField** ppOwner)
{
HRESULT hr = S_OK;
CComPtr<IMetaDataImport> pMetadata;
METHOD_ENTRY( CDebugGenericParamFieldType::GetOwner );
IfFalseGo(ppOwner, E_INVALIDARG );
*ppOwner = NULL;
IfFailGo( this->LoadProps() );
IfFailGo( m_spSH->GetMetadata( m_idModule, &pMetadata ) );
switch (TypeFromToken(m_tokOwner))
{
case mdtMethodDef:
{
mdTypeDef tokClass;
CComPtr<IDebugField> pClass;
CDEBUG_ADDRESS caddr;
CComPtr<IDebugContainerField> pContainer;
IfFailGo( pMetadata->GetMethodProps( m_tokOwner, &tokClass, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL ) );
IfFailGo( m_spSH->CreateClassType(m_idModule, tokClass, &pClass) );
IfFailGo( pClass->QueryInterface( &pContainer ) );
IfFailGo( caddr.InitializeMethod( m_idModule, tokClass, m_tokOwner, 0, 0 ) );
IfFailGo( m_spSH->CreateMethodSymbol( pContainer, caddr, FIELD_SYM_MEMBER, ppOwner ) );
break;
}
case mdtTypeDef:
{
IfFailGo( m_spSH->CreateClassType(m_idModule, m_tokOwner, ppOwner) );
break;
}
default:
{
ASSERT(!"Unexpected Owner type for Generic Param Field");
hr = E_FAIL;
}
}
Error:
METHOD_EXIT( CDebugGenericParamFieldType::GetOwner, hr );
return hr;
}