IDiaDataSourceEx::loadDataForExeEx
Ouvre et prépare les données de débogage associées au fichier .exe/.dll, avec prérécupération d’enregistrement facultative.
Syntaxe
HRESULT loadDataForExeEx (
LPCOLESTR executable,
LPCOLESTR searchPath,
IUnknown* pCallback,
BOOL fPdbPrefetching
);
Paramètres
executable
[in] Chemin du fichier .exe ou .dll.
searchPath
[in] Autre chemin pour rechercher des données de débogage. Plusieurs chemins doivent être délimités par des points-virgules. Les chemins d’accès peuvent contenir un chemin de \
fin .
pCallback
[in] Interface IUnknown
d’un objet qui prend en charge une interface de rappel de débogage, telle que le IDiaLoadCallback
, IDiaLoadCallback2
le , et IDiaReadExeAtOffsetCallback
/ou les IDiaReadExeAtRVACallback
interfaces.
fPdbPrefetching
[in] Si la valeur est définie TRUE
, les enregistrements de débogage adjacents sont prérécupérés en mémoire, en remplaçant potentiellement de nombreuses opérations d’E/S de fichiers plus petites avec moins d’opérations plus volumineuses, et ainsi améliorer le débit global, car ces enregistrements sont ensuite accessibles, au détriment de l’utilisation potentiellement accrue de la mémoire. Si la valeur est définie FALSE
, cela se comporte de façon identique à IDiaDataSource::loadDataForExe
. Si la valeur est définie sur une autre valeur, le comportement n’est pas spécifié.
Valeur de retour
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 des données de débogage à partir d’un serveur de symboles, symsrv.dll doit être présent dans le même répertoire où l’application de l’utilisateur ou msdia140.dll est installé, ou il doit ê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, il IDiaLoadCallback::NotifyDebugDir
est appelé lorsque la IDiaDataSourceEx::loadDataForExeEx
méthode recherche et traite un répertoire de débogage.
Les IDiaReadExeAtOffsetCallback
interfaces permettent IDiaReadExeAtRVACallback
à l’application cliente de fournir d’autres méthodes pour lire les données à partir du fichier exécutable lorsque le fichier ne peut pas être accessible directement via les E/S de fichier standard.
Pour charger un fichier .pdb sans validation, utilisez la IDiaDataSourceEx::loadDataFromPdbEx
méthode.
Pour valider le fichier .pdb par rapport à des critères spécifiques, utilisez la IDiaDataSourceEx::loadAndValidateDataFromPdbEx
méthode.
Pour charger un fichier .pdb directement à partir de la mémoire, utilisez la IDiaDataSourceEx::loadDataFromIStreamEx
méthode.
Pour valider un fichier .pdb sans le charger, utilisez la IDiaDataSourceEx::ValidatePdb
méthode.
Exemple
class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExeEx( L"myprog.exe", L".\debug", (IUnknown*)&callback, TRUE);
if (FAILED(hr))
{
// Report error
}