IDiaDataSource::loadDataFromMiscInfo
Apre e prepara i dati di debug associati al .exe
/.dll
file.
Sintassi
HRESULT loadDataFromMiscInfo (
LPCOLESTR executable,
LPCOLESTR searchPath,
DWORD timeStampExe,
DWORD timeStampDbg,
DWORD sizeOfExe,
DWORD cbMiscInfo,
BYTE* pbMiscInfo,
IUnknown* pCallback
);
Parametri
executable
[in] Percorso del .exe
file o .dll
.
searchPath
[in] Percorsi alternativi per la ricerca dei dati di debug. I percorsi multipli devono essere delimitati da punti e virgola. I percorsi possono contenere un oggetto finale \
.
timeStampExe
[in] Timestamp alternativo per l'immagine eseguibile.
timeStampDbg
[in] Timestamp alternativo per le informazioni di debug.
sizeOfExe
[in] Dimensioni alternative dell'immagine eseguibile in byte.
cbMiscInfo
[in] Dimensioni in byte del pbMiscInfo
parametro.
pbMiscInfo
[in] Intestazione di debug alternativa nel IMAGE_DEBUG_MISC
formato che fornisce il nome file con le informazioni di debug.
pCallback
[in] Interfaccia IUnknown
per un oggetto che supporta un'interfaccia di callback di debug, ad esempio IDiaLoadCallback
, IDiaLoadCallback2
, IDiaReadExeAtOffsetCallback
e/o le IDiaReadExeAtRVACallback
interfacce.
Valore restituito
Se ha esito positivo, restituisce S_OK
; in caso contrario, restituisce un codice di errore. La tabella seguente illustra alcuni dei possibili codici di errore per questo metodo.
valore | Descrizione |
---|---|
E_PDB_NOT_FOUND |
Impossibile aprire il file oppure il file ha un formato non valido. |
E_PDB_FORMAT |
Tentativo di accesso a un file con un formato obsoleto. |
E_PDB_INVALID_SIG |
La firma non corrisponde. |
E_PDB_INVALID_AGE |
L'età non corrisponde. |
E_INVALIDARG |
Parametro non valido. |
E_UNEXPECTED |
L'origine dati è già stata preparata. |
Osservazioni:
PbMiscInfo sostituisce le informazioni di debug nell'immagine eseguibile e assegna un nome al percorso dei dati di debug associato. I timestamp e le dimensioni vengono usati per trovare le corrispondenze con le informazioni di debug.
Se si caricano dati di debug da un server di simboli, symsrv.dll deve essere presente nella stessa directory in cui è installata l'applicazione dell'utente o msdia140.dll oppure deve essere presente nella directory di sistema.
Questo metodo cerca e prepara i dati di debug. Lo stato di avanzamento della ricerca può, facoltativamente, essere segnalato e controllato tramite callback. Ad esempio, IDiaLoadCallback::NotifyDebugDir
viene richiamato quando il IDiaDataSource::loadDataForExe
metodo trova ed elabora una directory di debug.
Le IDiaReadExeAtOffsetCallback
interfacce e IDiaReadExeAtRVACallback
consentono all'applicazione client di fornire metodi alternativi per la lettura dei dati dal file eseguibile quando non è possibile accedere direttamente al file tramite I/O di file standard.
Per caricare un file con estensione pdb senza convalida, usare il IDiaDataSource::loadDataFromPdb
metodo .
Per convalidare il file con estensione pdb in base a criteri specifici, usare il IDiaDataSource::loadAndValidateDataFromPdb
metodo .
Per caricare un file con estensione pdb direttamente dalla memoria, usare il IDiaDataSource::loadDataFromIStream
metodo .
Per convalidare un file con estensione pdb senza caricarlo, usare il metodo IDiaDataSourceEx::ValidatePdb .
Esempio
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
}