Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hiermee opent u de foutopsporingsgegevens die aan het bestand zijn gekoppeld en bereidt u deze .exe/.dll voor.
Syntaxis
HRESULT loadDataFromMiscInfo (
LPCOLESTR executable,
LPCOLESTR searchPath,
DWORD timeStampExe,
DWORD timeStampDbg,
DWORD sizeOfExe,
DWORD cbMiscInfo,
BYTE* pbMiscInfo,
IUnknown* pCallback
);
Parameterwaarden
executable
[in] Pad naar het .exe of .dll bestand.
searchPath
[in] Alternatieve paden om te zoeken naar foutopsporingsgegevens. Meerdere paden moeten door puntkomma's worden gescheiden. Paden kunnen een volgpad \bevatten.
timeStampExe
[in] Alternatieve tijdstempel voor de uitvoerbare installatiekopieën.
timeStampDbg
[in] Alternatieve tijdstempel voor de foutopsporingsgegevens.
sizeOfExe
[in] Alternatieve grootte van de uitvoerbare installatiekopieën in bytes.
cbMiscInfo
[in] Grootte in bytes van de pbMiscInfo parameter.
pbMiscInfo
[in] Alternatieve foutopsporingsheader in IMAGE_DEBUG_MISC indeling die de bestandsnaam voorziet van de foutopsporingsgegevens.
pCallback
[in] Een IUnknown interface voor een object dat ondersteuning biedt voor een callback-interface voor foutopsporing, zoals de IDiaLoadCallback, IDiaLoadCallback2, de IDiaReadExeAtOffsetCallbacken/of de IDiaReadExeAtRVACallback interfaces.
Retourwaarde
Als dit lukt, wordt S_OKgeretourneerd; retourneert anders een foutcode. In de volgende tabel ziet u enkele mogelijke foutcodes voor deze methode.
| Waarde | Beschrijving |
|---|---|
E_PDB_NOT_FOUND |
Kan het bestand niet openen of het bestand heeft een ongeldige indeling. |
E_PDB_FORMAT |
Er is geprobeerd toegang te krijgen tot een bestand met een verouderde indeling. |
E_PDB_INVALID_SIG |
De handtekening komt niet overeen. |
E_PDB_INVALID_AGE |
Leeftijd komt niet overeen. |
E_INVALIDARG |
Ongeldige parameter. |
E_UNEXPECTED |
De gegevensbron is al voorbereid. |
Opmerkingen
PbMiscInfo vervangt de foutopsporingsinformatie in de uitvoerbare installatiekopieën en noemt de bijbehorende locatie voor foutopsporingsgegevens. De tijdstempels en grootte worden gebruikt om de foutopsporingsgegevens te vinden.
Als u foutopsporingsgegevens laadt vanaf een symboolserver, moet symsrv.dll aanwezig zijn in dezelfde map waarin de toepassing of msdia140.dll van de gebruiker is geïnstalleerd, of moet deze aanwezig zijn in de systeemmap.
Met deze methode worden de foutopsporingsgegevens gezocht en voorbereid. De voortgang van de zoekopdracht kan eventueel worden gerapporteerd en beheerd via callbacks. De wordt bijvoorbeeld IDiaLoadCallback::NotifyDebugDir aangeroepen wanneer de IDiaDataSource::loadDataForExe methode een foutopsporingsmap vindt en verwerkt.
Met IDiaReadExeAtOffsetCallback de en IDiaReadExeAtRVACallback interfaces kan de clienttoepassing alternatieve methoden bieden voor het lezen van gegevens uit het uitvoerbare bestand wanneer het bestand niet rechtstreeks kan worden geopend via standaardbestand-I/O.
Als u een PDB-bestand zonder validatie wilt laden, gebruikt u de IDiaDataSource::loadDataFromPdb methode.
Gebruik de IDiaDataSource::loadAndValidateDataFromPdb methode om het PDB-bestand te valideren op basis van specifieke criteria.
Als u een PDB-bestand rechtstreeks vanuit het geheugen wilt laden, gebruikt u de IDiaDataSource::loadDataFromIStream methode.
Als u een PDB-bestand wilt valideren zonder het te laden, gebruikt u de methode IDiaDataSourceEx::ValidatePdb .
Voorbeeld
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
}