IDiaDataSourceEx::loadDataForExeEx
Apre e prepara i dati di debug associati al file .exe/.dll, con il prelettura del record facoltativo.
Sintassi
HRESULT loadDataForExeEx (
LPCOLESTR executable,
LPCOLESTR searchPath,
IUnknown* pCallback,
BOOL fPdbPrefetching
);
Parametri
executable
[in] Percorso del file .exe o .dll.
searchPath
[in] Percorso alternativo per cercare i dati di debug. I percorsi multipli devono essere delimitati da punti e virgola. I percorsi possono contenere un oggetto finale \
.
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.
fPdbPrefetching
[in] Se impostato su TRUE
, i record di debug adiacenti vengono preletturati in memoria, sostituendo potenzialmente molte operazioni di I/O di file più piccole con meno operazioni di dimensioni maggiori e migliorando così la velocità effettiva complessiva man mano che tali record vengono successivamente accessibili, a scapito di un potenziale aumento dell'utilizzo della memoria. Se impostato su FALSE
, questo comportamento si comporta in modo identico a IDiaDataSource::loadDataForExe
. Se impostato su un altro valore, il comportamento non è specificato.
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:
L'intestazione di debug del file .exe/.dll denomina il percorso dei dati di debug associato.
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 legge l'intestazione di debug e quindi 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 IDiaDataSourceEx::loadDataForExeEx
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 IDiaDataSourceEx::loadDataFromPdbEx
metodo .
Per convalidare il file con estensione pdb in base a criteri specifici, usare il IDiaDataSourceEx::loadAndValidateDataFromPdbEx
metodo .
Per caricare un file con estensione pdb direttamente dalla memoria, usare il IDiaDataSourceEx::loadDataFromIStreamEx
metodo .
Per convalidare un file con estensione pdb senza caricarlo, usare il IDiaDataSourceEx::ValidatePdb
metodo .
Esempio
class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExeEx( L"myprog.exe", L".\debug", (IUnknown*)&callback, TRUE);
if (FAILED(hr))
{
// Report error
}