Partilhar via


IDiaDataSource::loadAndValidateDataFromPdb

Abre e verifica se o arquivo de banco de dados do programa (.pdb) corresponde às informações de assinatura fornecidas e prepara o arquivo .pdb como uma fonte de dados de depuração.

Sintaxe

HRESULT loadAndValidateDataFromPdb ( 
   LPCOLESTR pdbPath,
   GUID*     pcsig70,
   DWORD     sig,
   DWORD     age
);

Parâmetros

pdbPath

[in] O caminho para o arquivo .pdb.

pcsig70

[em] A assinatura do identificador global exclusivo (GUID) para verificar a assinatura do arquivo .pdb. Somente arquivos .pdb no Visual C++ e posteriores têm assinaturas GUID.

sig

[in] A assinatura de 32 bits a ser verificada na assinatura do arquivo .pdb.

age

[in] Valor de idade a ser verificado. A idade não corresponde necessariamente a nenhum valor de tempo conhecido, ela é usada para determinar se um arquivo .pdb está fora de sincronia com um arquivo .exe correspondente.

Valor de retorno

Se tiver êxito, retornará S_OK. Caso contrário, retornará um código de erro. A tabela a seguir mostra os possíveis valores retornados 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 Ocorreu uma tentativa de acessar um arquivo com um formato obsoleto.
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.

Comentários

Um arquivo .pdb contém valores de assinatura e idade. Esses valores são replicados no arquivo .exe ou .dll que corresponde ao arquivo .pdb. Antes de preparar a fonte de dados, esse método verifica se a assinatura e a idade do arquivo .pdb nomeado correspondem aos valores fornecidos.

Para carregar um arquivo .pdb e validar com a pré-busca, use o IDiaDataSourceEx::loadAndValidateDataFromPdbEx método.

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

Para obter acesso ao processo de carregamento de dados (por meio de um mecanismo de retorno de chamada), use o IDiaDataSource::loadDataForExe 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 IDiaDataSourceEx::ValidatePdb método.

Exemplo

IDiaDataSource* pSource;  // Previously created data source.
DEFINE_GUID(expectedGUIDSignature,0x1234,0x5678,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08);
DWORD expectedFileSignature = 0x12345678;
DWORD expectedAge           = 128;

HRESULT hr;
hr = pSource->loadAndValidateDataFromPdb( L"yprog.pdb",
                                          &expectedGUIDSignature,
                                          expectedFileSignature,
                                          expectedAge);
if (FAILED(hr))
{
    // Report an error
}

Confira também