IDiaDataSource::loadDataForExe
Öffnet die Debugdaten, die der EXE-/DLL-Datei zugeordnet sind, und bereitet sie vor.
Syntax
HRESULT loadDataForExe (
LPCOLESTR executable,
LPCOLESTR searchPath,
IUnknown* pCallback
);
Parameter
executable
[in] Pfad zur .exe- oder .dll-Datei.
searchPath
[in] Alternativer Pfad zum Suchen nach Debugdaten.
pCallback
[in] Eine IUnknown
-Schnittstelle für ein Objekt, das eine Debugrückrufschnittstelle unterstützt, z. B. die Schnittstellen IDiaLoadCallback, IDiaLoadCallback2, IDiaReadExeAtOffsetCallback und/oder IDiaReadExeAtRVACallback.
Rückgabewert
Wenn die Ausführung erfolgreich ist, wird S_OK
, andernfalls ein Fehlercode zurückgegeben. Die folgende Tabelle enthält einige der möglichen Fehlercodes dieser Methode.
Wert | BESCHREIBUNG |
---|---|
E_PDB_NOT_FOUND | Fehler beim Öffnen der Datei, oder die Datei weist ein ungültiges Format auf. |
E_PDB_FORMAT | Es wurde versucht, auf eine Datei mit einem veralteten Format zuzugreifen. |
E_PDB_INVALID_SIG | Die Signatur stimmt nicht überein. |
E_PDB_INVALID_AGE | Das Alter stimmt nicht überein. |
E_INVALIDARG | Ungültiger Parameter. |
E_UNEXPECTED | Die Datenquelle wurde bereits vorbereitet. |
Bemerkungen
Der Debugheader der .exe/.dll-Datei benennt den zugeordneten Debugdatenspeicherort.
Wenn Sie Debugdaten von einem Symbolserver laden, muss symsrv.dll im selben Verzeichnis vorhanden sein, in dem entweder die Anwendung des Benutzers oder msdia140.dll installiert ist, oder sie muss im Systemverzeichnis vorhanden sein.
Diese Methode liest den Debugheader, sucht dann nach den Debugdaten und bereitet sie vor. Der Fortschritt der Suche kann über Rückrufe gemeldet und gesteuert werden. Beispielsweise wird IDiaLoadCallback::NotifyDebugDir aufgerufen, wenn die IDiaDataSource::loadDataForExe
-Methode ein Debugverzeichnis findet und verarbeitet.
Die Schnittstellen IDiaReadExeAtOffsetCallback und IDiaReadExeAtRVACallback ermöglichen es der Clientanwendung, alternative Methoden zum Lesen von Daten von der ausführbaren Datei bereitzustellen, wenn auf die Datei nicht direkt über Standarddatei-E/A zugegriffen werden kann.
Um eine PDB-Datei ohne Validierung zu laden, verwenden Sie die IDiaDataSource::loadDataFromPdb-Methode.
Um die PDB-Datei anhand bestimmter Kriterien zu überprüfen, verwenden Sie die IDiaDataSource::loadAndValidateDataFromPdb-Methode.
Verwenden Sie die Methode IDiaDataSource::loadDataFromIStream, um eine PDB-Datei direkt aus dem Speicher zu laden.
Beispiel
class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExe( L"myprog.exe", L".\debug", (IUnknown*)&callback);
if (FAILED(hr))
{
// Report error
}