Condividi tramite


IDiaDataSource::loadDataFromMiscInfo

Apre e prepara i dati di debug associati al .exe/.dll file.

Sintassi

HRESULT loadDataFromMiscInfo (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   DWORD     timeStampExe,
   DWORD     timeStampDbg,
   DWORD     sizeOfExe,
   DWORD     cbMiscInfo,
   BYTE*     pbMiscInfo,
   IUnknown* pCallback
);

Parametri

executable

[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 \.

timeStampExe

[in] Timestamp alternativo per l'immagine eseguibile.

timeStampDbg

[in] Timestamp alternativo per le informazioni di debug.

sizeOfExe

[in] Dimensioni alternative dell'immagine eseguibile in byte.

cbMiscInfo

[in] Dimensioni in byte del pbMiscInfo parametro.

pbMiscInfo

[in] Intestazione di debug alternativa nel IMAGE_DEBUG_MISC formato che fornisce il nome file con le informazioni di debug.

pCallback

[in] Interfaccia IUnknown per un oggetto che supporta un'interfaccia di callback di debug, ad esempio IDiaLoadCallback, IDiaLoadCallback2, IDiaReadExeAtOffsetCallbacke/o le IDiaReadExeAtRVACallback interfacce.

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:

PbMiscInfo sostituisce le informazioni di debug nell'immagine eseguibile e assegna un nome al percorso dei dati di debug associato. I timestamp e le dimensioni vengono usati per trovare le corrispondenze con le informazioni di debug.

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 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 file con estensione pdb 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

DWORD dwTimeStamp = 0x3BF1C039;
DWORD dwSizeImage = 0x0000A000;
BYTE pbMiscInfo[0x110] = {
  ...
};
HRESULT hr = pSource->loadDataFromMiscInfo( L"myprog.exe", L".\debug", dwTimeStamp, dwTimeStamp, dwSizeOfImage, sizeof(pbMiscInfo), pbMiscInfo, nullptr);
if (FAILED(hr))
{
    // Report error
}

Vedi anche