Condividi tramite


IDiaDataSourceEx::loadAndValidateDataFromPdbEx

Apre e verifica che il file del database del programma (con estensione pdb) corrisponda alle informazioni sulla firma fornite e prepari il file con estensione pdb come origine dati di debug, con prelettura dei record facoltativi.

Sintassi

HRESULT loadAndValidateDataFromPdbEx ( 
   LPCOLESTR pdbPath,
   GUID*     pcsig70,
   DWORD     sig,
   DWORD     age,
   BOOL      fPdbPrefetching
);

Parametri

pdbPath

[in] Percorso del file con estensione pdb.

pcsig70

[in] Firma dell'identificatore univoco globale (GUID) da verificare rispetto alla firma del file con estensione pdb. Solo i file con estensione pdb in Visual C++ e versioni successive hanno firme GUID.

sig

[in] Firma a 32 bit da verificare rispetto alla firma del file con estensione pdb.

age

[in] Valore di età da verificare. L'età non corrisponde necessariamente a un valore temporale noto, viene usato per determinare se un file con estensione pdb non è sincronizzato con un file .exe corrispondente.

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::loadAndValidateDataFromPdb. 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. Nella tabella seguente vengono illustrati i possibili valori restituiti 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:

Un file con estensione pdb contiene sia valori di firma che di età. Questi valori vengono replicati nel file .exe o .dll corrispondente al file con estensione pdb. Prima di preparare l'origine dati, questo metodo verifica che la firma e l'età del file con estensione pdb denominata corrispondano ai valori specificati.

Per caricare un file con estensione pdb senza convalida, usare il IDiaDataSourceEx::loadDataFromPdbEx metodo .

Per ottenere l'accesso al processo di caricamento dei dati (tramite un meccanismo di callback), usare il IDiaDataSourceEx::loadDataForExeEx 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

IDiaDataSource* pSource;  // Previously created data source.
DEFINE_GUID(expectedGUIDSignature,0x1234,0x5678,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08);
DWORD expectedFileSignature = 0x12345678;
DWORD expectedAge           = 128;

HRESULT hr;
hr = pSource->loadAndValidateDataFromPdbEx( L"yprog.pdb",
                                            &expectedGUIDSignature,
                                            expectedFileSignature,
                                            expectedAge,
                                            TRUE);
if (FAILED(hr))
{
    // Report an error
}

Vedi anche