IDiaDataSource::loadDataFromCodeViewInfo
Apre e prepara i dati di debug associati al .exe
/.dll
file.
Sintassi
HRESULT loadDataFromCodeViewInfo (
LPCOLESTR executable,
LPCOLESTR searchPath,
DWORD cbCvInfo,
BYTE* pbCvInfo,
IUnknown* pCallback
);
Parametri
file eseguibile
[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 \
.
cbCvInfo
[in] Dimensione in byte del pbCvInfo
parametro.
pbCvInfo
[in] Informazioni alternative sulla visualizzazione del codice dell'intestazione di debug (per sostituire ciò che è normale letto dal IMAGE_DEBUG_DIRECTORY dell'eseguibile). Sono supportate solo le intestazioni RSDS o NB10.
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 non supportato. |
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:
Le informazioni sulla visualizzazione del codice, in IMAGE_DEBUG_TYPE_CODEVIEW
formato, assegnano un nome al percorso dei dati di debug associato, oltre a visualizzare i campi di firma e età in base ai quali eseguire la corrispondenza.
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 fornita 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 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 .pdb
file 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
BYTE pbCodeViewInfo[] = {
...
};
HRESULT hr = pSource->loadDataFromCodeViewInfo( L"myprog.exe", L".\debug", sizeof(pbCodeViewInfo), pbCodeViewInfo, nullptr);
if (FAILED(hr))
{
// Report error
}