Condividi tramite


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

Vedi anche