IDiaDataSourceEx::loadDataForExeEx
Öffnet und bereitet die Debugdaten bereit, die der datei .exe/.dll zugeordnet sind, mit optionaler Datensatzvorschub.
Syntax
HRESULT loadDataForExeEx (
LPCOLESTR executable,
LPCOLESTR searchPath,
IUnknown* pCallback,
BOOL fPdbPrefetching
);
Parameter
executable
[in] Pfad zur .exe- oder .dll-Datei.
searchPath
[in] Alternativer Pfad zum Suchen nach Debugdaten. Mehrere Pfade sollten durch Semikolons getrennt sein. Pfade können einen nachgestellten \
Pfad enthalten.
pCallback
[in] Eine IUnknown
Schnittstelle für ein Objekt, das eine Debugrückrufschnittstelle unterstützt, z. B. die IDiaLoadCallback
, IDiaLoadCallback2
die , die IDiaReadExeAtOffsetCallback
und/oder die IDiaReadExeAtRVACallback
Schnittstellen.
fPdbPrefetching
[in] Bei Festlegung auf TRUE
, werden angrenzende Debugdatensätze in den Arbeitsspeicher voreingestellt, wodurch möglicherweise viele kleinere Datei-E/A-Vorgänge durch weniger, größere Vorgänge ersetzt werden und somit der gesamter Durchsatz verbessert wird, da anschließend auf diese Datensätze zugegriffen wird, auf Kosten der potenziell erhöhten Speicherauslastung. Bei Festlegung FALSE
auf , verhält sich dies identisch mit IDiaDataSource::loadDataForExe
. Wenn dieser Wert auf einen anderen Wert festgelegt ist, wird das Verhalten nicht angegeben.
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. Dies wird beispielsweise aufgerufen, wenn die IDiaLoadCallback::NotifyDebugDir
IDiaDataSourceEx::loadDataForExeEx
Methode ein Debugverzeichnis findet und verarbeitet.
IDiaReadExeAtRVACallback
Mit IDiaReadExeAtOffsetCallback
den Schnittstellen kann die Clientanwendung alternative Methoden zum Lesen von Daten aus der ausführbaren Datei bereitstellen, wenn auf die Datei nicht direkt über Standarddatei-E/A zugegriffen werden kann.
Verwenden Sie die IDiaDataSourceEx::loadDataFromPdbEx
Methode, um eine PDB-Datei ohne Überprüfung zu laden.
Verwenden Sie die IDiaDataSourceEx::loadAndValidateDataFromPdbEx
Methode, um die PDB-Datei anhand bestimmter Kriterien zu überprüfen.
Verwenden Sie die Methode, um eine PDB-Datei direkt aus dem IDiaDataSourceEx::loadDataFromIStreamEx
Arbeitsspeicher zu laden.
Verwenden Sie die Methode, um eine PDB-Datei zu überprüfen, ohne sie IDiaDataSourceEx::ValidatePdb
zu laden.
Beispiel
class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExeEx( L"myprog.exe", L".\debug", (IUnknown*)&callback, TRUE);
if (FAILED(hr))
{
// Report error
}