IDiaDataSource::loadDataForExe
Otevře a připraví ladicí data přidružená k souboru .exe/.dll.
Syntaxe
HRESULT loadDataForExe (
LPCOLESTR executable,
LPCOLESTR searchPath,
IUnknown* pCallback
);
Parametry
Spustitelný soubor
[v] Cesta k souboru .exe nebo .dll
Searchpath
[v] Alternativní cesta k hledání dat ladění
pCallback
[v] Rozhraní IUnknown
pro objekt, který podporuje ladění zpětné volání rozhraní, jako je IDiaLoadCallback, IDiaLoadCallback2, IDiaReadExeAtOffsetCallback a/nebo IDiaReadExeAtRVACallback rozhraní.
Návratová hodnota
V případě úspěchu vrátí hodnotu S_OK
; v opačném případě vrátí kód chyby. Následující tabulka uvádí některé možné kódy chyb pro tuto metodu.
Hodnota | Popis |
---|---|
E_PDB_NOT_FOUND | Soubor se nepodařilo otevřít nebo soubor má neplatný formát. |
E_PDB_FORMAT | Pokusil se o přístup k souboru s zastaralým formátem. |
E_PDB_INVALID_SIG | Podpis se neshoduje. |
E_PDB_INVALID_AGE | Věk se neshoduje. |
E_INVALIDARG | Neplatný parametr. |
E_UNEXPECTED | Zdroj dat je již připravený. |
Poznámky
Hlavička ladění souboru .exe/.dll pojmenuje přidružené umístění dat ladění.
Pokud načítáte ladicí data ze serveru symbolů, symsrv.dll musí být ve stejném adresáři, ve kterém je nainstalovaná aplikace uživatele nebo msdia140.dll, nebo musí být v systémovém adresáři.
Tato metoda přečte hlavičku ladění a pak vyhledá a připraví ladicí data. Průběh hledání může být volitelně hlášen a řízen zpětnými voláními. Například IDiaLoadCallback::NotifyDebugDir je vyvolána, když IDiaDataSource::loadDataForExe
metoda najde a zpracuje ladicí adresář.
Rozhraní IDiaReadExeAtOffsetCallback a IDiaReadExeAtRVACallback umožňují klientské aplikaci poskytovat alternativní metody pro čtení dat ze spustitelného souboru, pokud k souboru nelze získat přístup přímo prostřednictvím standardních vstupně-výstupních operací souboru.
Pokud chcete načíst soubor .pdb bez ověření, použijte metodu IDiaDataSource::loadDataFromPdb .
K ověření souboru .pdb s konkrétními kritérii použijte metodu IDiaDataSource::loadAndValidateDataFromPdb .
Chcete-li načíst soubor .pdb přímo z paměti, použijte IDiaDataSource::loadDataFromIStream metoda.
Příklad
class MyCallBack: public IDiaLoadCallback
{
...
};
MyCallBack callback;
...
HRESULT hr = pSource->loadDataForExe( L"myprog.exe", L".\debug", (IUnknown*)&callback);
if (FAILED(hr))
{
// Report error
}