Delen via


IDiaDataSource::loadDataFromMiscInfo

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
}

Zie ook