Partager via


IDiaDataSource::loadAndValidateDataFromPdb

Ouvre et vérifie que le fichier de base de données du programme (.pdb) correspond aux informations de signature fournies, et prépare le fichier .pdb comme source de données de débogage.

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

Paramètres

  • pdbPath
    [in] Le chemin d'accès du fichier .pdb.

  • pcsig70
    [in] La signature de GUID à vérifier par rapport à la signature de fichier .pdb. Seuls les fichiers .pdb dans Visual C++ et ont ultérieurement des signatures GUID.

  • sig
    [in] La signature 32 bits à vérifier par rapport à la signature de fichier .pdb.

  • age
    [in] Valeur de personnes à vérifier. L'âge ne correspond toujours à aucune valeur d'heure, il est utilisée pour déterminer si un fichier .pdb est pas synchronisé avec un fichier .exe correspondant.

Valeur de retour

En cas de réussite, retourne S_OK; sinon, retourne un code d'erreur. Le tableau suivant montre les valeurs de retour possibles de cette méthode.

Valeur

Description

E_PDB_NOT_FOUND

pour ouvrir le fichier, ou le fichier a un format valide.

E_PDB_FORMAT

Tenté d'accéder à un fichier par un format obsolète.

E_PDB_INVALID_SIG

La signature ne correspond pas.

E_PDB_INVALID_AGE

L'âge ne correspond pas.

E_INVALIDARG

paramètre non valide.

E_UNEXPECTED

La source de données a déjà été préparée.

Notes

Un fichier .pdb contient la signature et les valeurs de personnes. Ces valeurs sont répliquées dans le fichier .exe ou .DLL qui correspond au fichier .pdb. Avant de préparer la source de données, cette méthode vérifie que la signature nommée et l'âge du fichier .pdb correspondent aux valeurs fournies.

Pour charger un fichier .pdb sans validation, utilisez la méthode d' IDiaDataSource::loadDataFromPdb .

Pour accéder au processus de chargement de données (via un mécanisme de rappel), utilisez la méthode d' IDiaDataSource::loadDataForExe .

Pour charger un fichier .pdb directement de mémoire, utilisez la méthode d' IDiaDataSource::loadDataFromIStream .

Exemple

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
}

Voir aussi

Référence

IDiaDataSource

IDiaDataSource::loadDataForExe

IDiaDataSource::loadDataFromPdb

IDiaDataSource::loadDataFromIStream