Partilhar via


IDiaDataSourceEx::loadAndValidateDataFromPdbEx

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, com pré-busca de registro opcional.

Sintaxe

HRESULT loadAndValidateDataFromPdbEx ( 
   LPCOLESTR pdbPath,
   GUID*     pcsig70,
   DWORD     sig,
   DWORD     age,
   BOOL      fPdbPrefetching
);

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.

fPdbPré-busca

[em] Se definido como TRUE, os registros de depuração adjacentes são pré-buscados na memória, potencialmente substituindo muitas operações de E/S de arquivo menores por menos operações maiores e, assim, melhorando a taxa de transferência geral à medida que esses registros são acessados posteriormente, às custas de um uso de memória potencialmente aumentado. Se definido como FALSE, isso se comporta de forma idêntica a IDiaDataSource::loadAndValidateDataFromPdb. Se definido como algum outro valor, o comportamento não será especificado.

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 sem validação, use o IDiaDataSourceEx::loadDataFromPdbEx método.

Para obter acesso ao processo de carregamento de dados (por meio de um mecanismo de retorno de chamada), use o IDiaDataSourceEx::loadDataForExeEx método.

Para carregar um arquivo .pdb diretamente da memória, use o IDiaDataSourceEx::loadDataFromIStreamEx 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->loadAndValidateDataFromPdbEx( L"yprog.pdb",
                                            &expectedGUIDSignature,
                                            expectedFileSignature,
                                            expectedAge,
                                            TRUE);
if (FAILED(hr))
{
    // Report an error
}

Confira também