IDebugModule3::GetSymbolInfo
Recupera uma lista de caminhos que são pesquisados para símbolos, como também os resultados da pesquisa a cada caminho.
HRESULT GetSymbolInfo(
SYMBOL_SEARCH_INFO_FIELDS dwFields,
MODULE_SYMBOL_SEARCH_INFO* pInfo
);
int GetSymbolInfo(
enum_SYMBOL_SEARCH_INFO_FIELDS dwFields,
MODULE_SYMBOL_SEARCH_INFO[] pinfo
);
Parâmetros
dwFields
[in] Uma combinação de sinalizadores da SYMBOL_SEARCH_INFO_FIELDS enumeração que especifica quais campos de pInfo está a ser preenchido.pInfo
[out] A MODULE_SYMBOL_SEARCH_INFO estrutura cujos membros são para ser preenchido com as informações especificadas. Se isso for um valor nulo, esse método retorna E_INVALIDARG.
Valor de retorno
Se o método for bem-sucedido, ele retorna S_OK; Caso contrário, ele retorna um código de erro.
Dica
A seqüência de caracteres retornada (na MODULE_SYMBOL_SEARCH_INFO estrutura) pode estar vazio mesmo que S_OK é retornado.Nesse caso, não havia nenhuma informação de pesquisa para retornar.
Comentários
Se a bstrVerboseSearchInfo campo do MODULE_SYMBOL_SEARCH_INFO estrutura não está vazia, em seguida, ele contém uma lista de caminhos pesquisados e os resultados da pesquisa. A lista está formatada com um caminho, seguido de reticências ("..."), seguidas pelo resultado. Se houver mais de um par de resultado de caminho, cada par é separado por um par de "\r\n" (carro-retorno/alimentação de linha). O padrão é semelhante a:
<path>... <result> do <path>... <result> \r\n \r\n <path>... <result>
Observe que a última entrada não tem uma seqüência de \r\n.
Exemplo
Neste exemplo, esse método retorna três caminhos com três diferentes resultados. Cada linha é encerrada com um par de carro-retorno/alimentação de linha. A saída de exemplo apenas imprime os resultados da pesquisa como uma única seqüência.
Dica
Um resultado de status é tudo imediatamente após o "..." até o final da linha.
void ShowSymbolSearchResults(IDebugModule3 *pIDebugModule3)
{
MODULE_SYMBOL_SEARCH_INFO ssi = { 0 };
HRESULT hr;
hr = pIDebugModule3->GetSymbolInfo(SSIF_VERBOSE_SEARCH_INFO,&ssi);
if (SUCCEEDED(hr)) {
CComBSTR searchInfo = ssi.bstrVerboseSearchInfo;
if (searchInfo.Length() != 0) {
std::wcout << (wchar_t *)(BSTR)searchInfo;
std::wcout << std::endl;
}
}
}