IDiaDataSource::loadDataFromMiscInfo
Otwiera i przygotowuje dane debugowania skojarzone z plikiem .exe
/.dll
.
Składnia
HRESULT loadDataFromMiscInfo (
LPCOLESTR executable,
LPCOLESTR searchPath,
DWORD timeStampExe,
DWORD timeStampDbg,
DWORD sizeOfExe,
DWORD cbMiscInfo,
BYTE* pbMiscInfo,
IUnknown* pCallback
);
Parametry
executable
[in] Ścieżka do .exe
pliku lub .dll
.
searchPath
[in] Alternatywne ścieżki do wyszukiwania danych debugowania. Wiele ścieżek powinno być rozdzielonych średnikami. Ścieżki mogą zawierać końcowy \
ciąg .
timeStampExe
[in] Alternatywny znacznik czasu obrazu wykonywalnego.
timeStampDbg
[in] Alternatywny znacznik czasu dla informacji o debugowaniu.
sizeOfExe
[in] Alternatywny rozmiar obrazu wykonywalnego w bajtach.
cbMiscInfo
[in] Rozmiar w bajtach paramteru pbMiscInfo
.
pbMiscInfo
[in] Alternatywny nagłówek debugowania w IMAGE_DEBUG_MISC
formacie, który udostępnia nazwę pliku z informacjami debugowania.
pCallback
[in] Interfejs IUnknown
dla obiektu, który obsługuje interfejs wywołania zwrotnego debugowania, taki jak IDiaLoadCallback
, IDiaLoadCallback2
, IDiaReadExeAtOffsetCallback
i/lub IDiaReadExeAtRVACallback
interfejsy.
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
Plik pbMiscInfo zastępuje informacje debugowania w obrazie wykonywalnych i nazywa skojarzona lokalizacja danych debugowania. Znaczniki czasu i rozmiar są używane do dopasowania informacji 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 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 IDiaDataSource::loadDataForExe
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 IDiaDataSource::loadDataFromPdb
metody .
Aby zweryfikować plik .pdb pod kątem określonych kryteriów, użyj IDiaDataSource::loadAndValidateDataFromPdb
metody .
Aby załadować plik .pdb bezpośrednio z pamięci, użyj IDiaDataSource::loadDataFromIStream
metody .
Aby zweryfikować plik .pdb bez ładowania go, użyj metody IDiaDataSourceEx::ValidatePdb .
Przykład
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
}