Udostępnij za pośrednictwem


IDiaDataSourceEx::loadAndValidateDataFromPdbEx

Otwiera plik i sprawdza, czy plik bazy danych programu (.pdb) jest zgodny z podanymi informacjami o podpisie i przygotowuje plik .pdb jako źródło danych debugowania z opcjonalnym pobieraniem rekordów.

Składnia

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

Parametry

pdbPath

[in] Ścieżka do pliku .pdb.

pcsig70

[in] Sygnatura globalnie unikatowego identyfikatora (GUID) do weryfikacji względem podpisu pliku .pdb. Tylko pliki .pdb w programie Visual C++ i nowszych mają podpisy GUID.

sig

[in] Podpis 32-bitowy do zweryfikowania pod sygnaturą pliku .pdb.

age

[in] Wartość wieku do zweryfikowania. Wiek nie musi odpowiadać każdej znanej wartości czasu, służy do określenia, czy plik pdb nie jest zsynchronizowany z odpowiednim plikiem .exe.

fPdbPrefetching

[in] Jeśli ustawiono TRUEwartość , sąsiadujące rekordy debugowania są wstępnie pobierane do pamięci, potencjalnie zastępując wiele mniejszych operacji we/wy plików mniejszą liczbą, większymi operacjami, a tym samym poprawiając ogólną przepływność, ponieważ te rekordy są następnie dostępne, kosztem potencjalnie zwiększonego użycia pamięci. Jeśli jest ustawiona wartość FALSE, zachowuje się identycznie z wartością IDiaDataSource::loadAndValidateDataFromPdb. Jeśli zostanie ustawiona inna wartość, zachowanie jest nieokreślone.

Wartość zwracana

Jeśli operacja powiedzie się, zwraca wartość S_OK; w przeciwnym razie zwraca kod błędu. W poniższej tabeli przedstawiono możliwe wartości zwracane dla tej metody.

Wartość Opis
E_PDB_NOT_FOUND Nie można otworzyć pliku lub plik ma nieprawidłowy format.
E_PDB_FORMAT Podjęto próbę uzyskania dostępu do pliku w przestarzałym formacie.
E_PDB_INVALID_SIG Podpis nie jest zgodny.
E_PDB_INVALID_AGE Wiek nie jest zgodny.
E_INVALIDARG Nieprawidłowy parametr.
E_UNEXPECTED Źródło danych zostało już przygotowane.

Uwagi

Plik .pdb zawiera zarówno wartości sygnatury, jak i wieku. Te wartości są replikowane w pliku .exe lub .dll, który jest zgodny z plikiem .pdb. Przed przygotowaniem źródła danych ta metoda sprawdza, czy sygnatura i wiek nazwanego pliku .pdb są zgodne z podanymi wartościami.

Aby załadować plik .pdb bez walidacji, użyj IDiaDataSourceEx::loadDataFromPdbEx metody .

Aby uzyskać dostęp do procesu ładowania danych (za pomocą mechanizmu wywołania zwrotnego), użyj IDiaDataSourceEx::loadDataForExeEx metody .

Aby załadować plik .pdb bezpośrednio z pamięci, użyj IDiaDataSourceEx::loadDataFromIStreamEx metody .

Aby zweryfikować plik .pdb bez ładowania go, użyj IDiaDataSourceEx::ValidatePdb metody .

Przykład

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
}

Zobacz też