IDebugComPlusSymbolProvider::GetNameFromToken
Retorna o nome associado com o token especificado dado seu objeto de metadados.
HRESULT GetNameFromToken (
IUnknown* pMetadataImport,
DWORD dwToken,
BSTR* pbstrName
);
int GetNameFromToken (
object pMetadataImport,
uint dwToken,
out string pbstrName
);
Parâmetros
pMetadataImport
[in] Objeto que contém as informações de metadados.dwToken
[in] Token seja nomeado.pbstrName
[out] Nome que corresponde ao token.
Valor de retorno
Se bem-sucedida, retorna S_OK; Caso contrário, retorna um código de erro.
Exemplo
O exemplo a seguir mostra como implementar este método para um CDebugSymbolProvider objeto que expõe a IDebugComPlusSymbolProvider interface.
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;
}