Freigeben über


IDiaDataSource::loadDataFromMiscInfo

Öffnet die Debugdaten, die der .exe/.dll Datei zugeordnet sind, und bereitet sie vor.

Syntax

HRESULT loadDataFromMiscInfo (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   DWORD     timeStampExe,
   DWORD     timeStampDbg,
   DWORD     sizeOfExe,
   DWORD     cbMiscInfo,
   BYTE*     pbMiscInfo,
   IUnknown* pCallback
);

Die Parameter

executable

[in] Pfad zur .exe Datei..dll

searchPath

[in] Alternative Pfade zum Suchen nach Debugdaten. Mehrere Pfade sollten durch Semikolons getrennt sein. Pfade können einen nachgestellten \Pfad enthalten.

timeStampExe

[in] Alternativer Zeitstempel für das ausführbare Image.

timeStampDbg

[in] Alternativer Zeitstempel für die Debuginformationen.

sizeOfExe

[in] Alternative Größe des ausführbaren Bilds in Byte.

cbMiscInfo

[in] Größe in Byte des pbMiscInfo Parameters.

pbMiscInfo

[in] Alternativer Debugheader im IMAGE_DEBUG_MISC Format, der den Dateinamen mit den Debuginformationen bereitstellt.

pCallback

[in] Eine IUnknown Schnittstelle für ein Objekt, das eine Debugrückrufschnittstelle unterstützt, z. B. die IDiaLoadCallback, IDiaLoadCallback2die , die IDiaReadExeAtOffsetCallbackund/oder die IDiaReadExeAtRVACallback Schnittstellen.

Rückgabewert

Wenn dies erfolgreich ist, wird S_OKzurückgegeben; andernfalls wird ein Fehlercode zurückgegeben. In der folgenden Tabelle sind einige der möglichen Fehlercodes für diese Methode aufgeführt.

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

PbMiscInfo ersetzt die Debuginformationen im ausführbaren Image und benennt den zugehörigen Debugdatenspeicherort. Die Zeitstempel und die Größe werden verwendet, um mit den Debuginformationen übereinzugleichen.

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 sucht und bereitet die Debugdaten vor. Der Fortschritt der Suche kann optional über Rückrufe gemeldet und gesteuert werden. Dies wird beispielsweise aufgerufen, wenn die IDiaLoadCallback::NotifyDebugDirIDiaDataSource::loadDataForExe Methode ein Debugverzeichnis findet und verarbeitet.

IDiaReadExeAtOffsetCallback Mit IDiaReadExeAtRVACallback 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 IDiaDataSource::loadDataFromPdb Methode, um eine PDB-Datei ohne Überprüfung zu laden.

Verwenden Sie die IDiaDataSource::loadAndValidateDataFromPdb Methode, um die PDB-Datei anhand bestimmter Kriterien zu überprüfen.

Verwenden Sie die Methode, um eine PDB-Datei direkt aus dem IDiaDataSource::loadDataFromIStream Arbeitsspeicher zu laden.

Um eine PDB-Datei zu überprüfen, ohne sie zu laden, verwenden Sie die IDiaDataSourceEx::ValidatePdb-Methode .

Beispiel

DWORD dwTimeStamp = 0x3BF1C039;
DWORD dwSizeImage = 0x0000A000;
BYTE pbMiscInfo[0x110] = {
  ...
};
HRESULT hr = pSource->loadDataFromMiscInfo( L"myprog.exe", L".\debug", dwTimeStamp, dwTimeStamp, dwSizeOfImage, sizeof(pbMiscInfo), pbMiscInfo, nullptr);
if (FAILED(hr))
{
    // Report error
}

Siehe auch