Condividi tramite


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
}

Vedi anche