Compartilhar via


IDiaDataSource::loadDataFromCodeViewInfo

Abre e prepara os dados de depuração associados ao .exe/.dll arquivo.

Sintaxe

HRESULT loadDataFromCodeViewInfo (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   DWORD     cbCvInfo,
   BYTE*     pbCvInfo,
   IUnknown* pCallback
);

Parâmetros

executável

[in] Caminho para o arquivo ou .exe o .dll caminho.

searchPath

[in] Caminhos alternativos para pesquisar dados de depuração. Vários caminhos devem ser delimitados por ponto-e-vírgula. Os caminhos podem conter um caminho à \direita.

cbCvInfo

[in] O tamanho em bytes do pbCvInfo parâmetro.

pbCvInfo

[in] As informações alternativas de exibição de código do cabeçalho de depuração (para substituir o que é leitura normal do IMAGE_DEBUG_DIRECTORY do executável). Há suporte apenas para cabeçalhos RSDS ou NB10.

pCallback

[in] Uma IUnknown interface para um objeto que dá suporte a uma interface de retorno de chamada de depuração, como as IDiaLoadCallbackIDiaLoadCallback2IDiaReadExeAtOffsetCallbackinterfaces IDiaReadExeAtRVACallback, e/ou iDiaReadExeAtRVACallback.

Valor de retorno

Se tiver êxito, retornará S_OK; caso contrário, retorna um código de erro. A tabela a seguir mostra alguns dos códigos de erro possíveis para esse método.

Valor Descrição
E_PDB_NOT_FOUND Falha ao abrir o arquivo ou o arquivo tem um formato inválido.
E_PDB_FORMAT Tentativa de acessar um arquivo com um formato sem suporte.
E_PDB_INVALID_SIG A assinatura não corresponde.
E_PDB_INVALID_AGE A idade não corresponde.
E_INVALIDARG Parâmetro inválido.
E_UNEXPECTED A fonte de dados já foi preparada.

Observações

As informações de exibição de código, em IMAGE_DEBUG_TYPE_CODEVIEW formato, nomeia o local de dados de depuração associado, bem como fornece os campos de sinalização e idade para correspondência.

Se você estiver carregando dados de depuração de um servidor de símbolos, symsrv.dll deverá estar presente no mesmo diretório em que o aplicativo do usuário ou msdia140.dll está instalado ou deve estar presente no diretório do sistema.

Esse método lê o cabeçalho de depuração fornecido e, em seguida, pesquisa e prepara os dados de depuração. O progresso da pesquisa pode, opcionalmente, ser relatado e controlado por meio de retornos de chamada. Por exemplo, o IDiaLoadCallback::NotifyDebugDir é invocado quando o IDiaDataSource::loadDataForExe método localiza e processa um diretório de depuração.

As IDiaReadExeAtOffsetCallback interfaces e IDiaReadExeAtRVACallback o aplicativo cliente permitem que o aplicativo cliente forneça métodos alternativos para ler dados do arquivo executável quando o arquivo não puder ser acessado diretamente por meio de E/S de arquivo padrão.

Para carregar um .pdb arquivo sem validação, use o IDiaDataSource::loadDataFromPdb método.

Para validar o arquivo .pdb em relação a critérios específicos, use o IDiaDataSource::loadAndValidateDataFromPdb método.

Para carregar um arquivo .pdb diretamente da memória, use o IDiaDataSource::loadDataFromIStream método.

Para validar um arquivo .pdb sem carregá-lo, use o método IDiaDataSourceEx::ValidatePdb' .

Exemplo

BYTE pbCodeViewInfo[] = {
  ...
};

HRESULT hr = pSource->loadDataFromCodeViewInfo( L"myprog.exe", L".\debug", sizeof(pbCodeViewInfo), pbCodeViewInfo, nullptr);
if (FAILED(hr))
{
    // Report error
}

Consulte também