IDiaDataSource::loadDataForExe
Apre e prepara i dati di debug associati al file .exe/.dll.
Sintassi
HRESULT loadDataForExe (
LPCOLESTR executable,
LPCOLESTR searchPath,
IUnknown* pCallback
);
Parametri
eseguibile
[in] Percorso del file .exe o .dll.
searchPath
[in] Percorso alternativo per cercare i dati 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 interfacce IDiaReadExeAtRVACallback.
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, L'oggetto IDiaLoadCallback::NotifyDebugDir viene richiamato quando il IDiaDataSource::loadDataForExe
metodo trova ed elabora una directory di debug.
Le interfacce IDiaReadExeAtOffsetCallback e IDiaReadExeAtRVACallback consentono all'applicazione client di fornire metodi alternativi per la lettura dei dati dal file eseguibile quando non è possibile accedere direttamente tramite I/O file standard.
Per caricare un file con estensione pdb senza convalida, usare il metodo IDiaDataSource::loadDataFromPdb .
Per convalidare il file con estensione pdb in base a criteri specifici, usare il metodo IDiaDataSource::loadAndValidateDataFromPdb .
Per caricare un file con estensione pdb direttamente dalla memoria, usare il metodo IDiaDataSource::loadDataFromIStream .
Esempio
class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExe( L"myprog.exe", L".\debug", (IUnknown*)&callback);
if (FAILED(hr))
{
// Report error
}