Udostępnij za pośrednictwem


IDiaDataSourceEx::loadDataForExeEx

Otwiera i przygotowuje dane debugowania skojarzone z plikiem .exe/.dll z opcjonalnym pobieraniem rekordów.

Składnia

HRESULT loadDataForExeEx (
   LPCOLESTR executable,
   LPCOLESTR searchPath,
   IUnknown* pCallback,
   BOOL      fPdbPrefetching
);

Parametry

executable

[in] Ścieżka do pliku .exe lub .dll.

searchPath

[in] Alternatywna ścieżka do wyszukiwania danych debugowania. Wiele ścieżek powinno być rozdzielonych średnikami. Ścieżki mogą zawierać końcowy \ciąg .

pCallback

[in] Interfejs IUnknown dla obiektu, który obsługuje interfejs wywołania zwrotnego debugowania, taki jak IDiaLoadCallback, IDiaLoadCallback2, IDiaReadExeAtOffsetCallbacki/lub IDiaReadExeAtRVACallback interfejsy.

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::loadDataForExe. 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 niektóre z możliwych kodów błędów 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

Nagłówek debugowania pliku .exe/.dll nazywa skojarzona lokalizacja danych debugowania.

Jeśli ładujesz dane debugowania z serwera symboli, symsrv.dll musi znajdować się w tym samym katalogu, w którym zainstalowano aplikację użytkownika lub msdia140.dll albo musi znajdować się w katalogu systemowym.

Ta metoda odczytuje nagłówek debugowania, a następnie wyszukuje i przygotowuje dane debugowania. Postęp wyszukiwania może, opcjonalnie, być raportowany i kontrolowany za pośrednictwem wywołań zwrotnych. Na przykład element IDiaLoadCallback::NotifyDebugDir jest wywoływany, gdy IDiaDataSourceEx::loadDataForExeEx metoda znajduje i przetwarza katalog debugowania.

Interfejsy IDiaReadExeAtOffsetCallback i IDiaReadExeAtRVACallback umożliwiają aplikacji klienckiej udostępnianie alternatywnych metod odczytywania danych z pliku wykonywalnego, gdy nie można uzyskać dostępu bezpośrednio za pośrednictwem standardowych operacji we/wy pliku.

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

Aby zweryfikować plik .pdb pod kątem określonych kryteriów, użyj IDiaDataSourceEx::loadAndValidateDataFromPdbEx 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

class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExeEx( L"myprog.exe", L".\debug", (IUnknown*)&callback, TRUE);
if (FAILED(hr))
{
    // Report error
}

Zobacz też