Condividi tramite


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, IDiaReadExeAtOffsetCallbacke/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
}

Vedi anche