IDiaDataSource::loadDataForExe

Ouvre et prépare les données de débogage associées au fichier .exe/.dll.

Syntaxe

HRESULT loadDataForExe (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   IUnknown* pCallback
);

Paramètres

executable

[in] Chemin du fichier .exe ou .dll.

searchPath

[in] Autre chemin pour rechercher des données de débogage.

pCallback

[in] Interface IUnknown pour un objet qui prend en charge une interface de rappel de débogage, telle que les interfaces IDiaLoadCallback, IDiaLoadCallback2, IDiaReadExeAtOffsetCallback et/ou IDiaReadExeAtRVACallback.

Valeur renvoyée

En cas de réussite, retourne S_OK , sinon, retourne un code d'erreur. Le tableau suivant présente certains des codes d’erreur possibles pour cette méthode.

Valeur Description
E_PDB_NOT_FOUND Impossible d’ouvrir le fichier, ou fichier de format non valide.
E_PDB_FORMAT Tentative d’accès à un fichier dont le format est 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.

Remarques

L’en-tête de débogage du fichier .exe/.dll nomme l’emplacement des données de débogage associées.

Si vous chargez les données de débogage à partir d’un serveur de symboles, symsrv.dll doit se trouver dans le même répertoire que celui où l’application de l’utilisateur ou msdia140.dll est installé, ou être présent dans le répertoire système.

Cette méthode lit l’en-tête de débogage, puis recherche et prépare les données de débogage. La progression de la recherche peut éventuellement être signalée et contrôlée par le biais de rappels. Par exemple, IDiaLoadCallback::NotifyDebugDir est appelé lorsque la méthode IDiaDataSource::loadDataForExe recherche et traite les données d’un répertoire de débogage.

Les interfaces IDiaReadExeAtOffsetCallback et IDiaReadExeAtRVACallback permettent à l’application cliente de fournir d’autres méthodes de lecture des données à partir du fichier exécutable dans le cas où le fichier n’est pas accessible directement par le biais d’E/S de fichier standard.

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

Pour valider le fichier .pdb par rapport à des critères spécifiques, utilisez la méthode IDiaDataSource::loadAndValidateDataFromPdb.

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

Exemple

class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExe( L"myprog.exe", L".\debug", (IUnknown*)&callback);
if (FAILED(hr))
{
    // Report error
}

Voir aussi