IDebugComPlusSymbolProvider::GetNameFromToken
Retorna o nome associado ao token especificado dado seu objeto de metadados.
Sintaxe
Parâmetros
pMetadataImport
[em] Objeto que contém as informações de metadados.
dwToken
[em] Token a ser nomeado.
pbstrName
[saiu] Nome que corresponde ao token.
Valor de retorno
Se tiver êxito, retornará S_OK
. Caso contrário, retornará um código de erro.
Exemplo
O exemplo a seguir mostra como implementar esse método para um objeto CDebugSymbolProvider que expõe a interface IDebugComPlusSymbolProvider.
HRESULT CDebugSymbolProvider::GetNameFromToken(
IUnknown* pMetadataImport,
DWORD dwToken,
BSTR* pbstrName
)
{
HRESULT hr = S_OK;
CComPtr<IMetaDataImport> pMetaData;
ASSERT(IsValidObjectPtr(this, CDebugSymbolProvider));
ASSERT(IsValidInterfacePtr(pMetadataImport, IUnknown));
METHOD_ENTRY(CDebugSymbolProvider::GetNameFromToken);
IfFalseGo( pMetadataImport && pbstrName, E_INVALIDARG );
*pbstrName = NULL;
IfFailGo( pMetadataImport->QueryInterface( IID_IMetaDataImport,
(void**) &pMetaData ) );
switch ( TypeFromToken(dwToken) )
{
case mdtModule:
IfFailGo( GetModuleName( pMetaData, dwToken, pbstrName) );
break;
case mdtTypeDef:
IfFailGo( GetTypeName( pMetaData, dwToken, pbstrName) );
break;
case mdtFieldDef:
IfFailGo( GetFieldName( pMetaData, dwToken, pbstrName) );
break;
case mdtMethodDef:
IfFailGo( GetMethodName( pMetaData, dwToken, pbstrName) );
break;
case mdtEvent:
IfFailGo( GetEventName( pMetaData, dwToken, pbstrName) );
break;
case mdtProperty:
IfFailGo( GetPropertyName( pMetaData, dwToken, pbstrName) );
break;
case mdtAssembly:
IfFailGo( GetAssemblyName( pMetaData, dwToken, pbstrName) );
break;
default:
ASSERT(!"Unsupported token passed to GetNameFromToken");
hr = E_FAIL;
break;
}
Error:
METHOD_EXIT(CDebugSymbolProvider::GetNameFromToken, hr);
return hr;
}