Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ha egy alkalmazás nem hívja meg a SymInitialize függvényt az fInvadeProcess paramétert IGAZértékre állítva, akkor be kell töltenie a szimbólumokat, amikor szükség van rájuk. Ha igény szerint szeretne betölteni egy szimbólummodult, az alkalmazás meghívhatja a SymLoadModuleEx függvényt egy modulnév teljes elérési útjával. A modul betöltésekor a szimbólumkezelő azonnal betölti a szimbólumokat, vagy elhalasztja a terhelést a SymSetOptions függvénnyel megadott beállításoktól függően.
Az alábbi kód betölt egy szimbólummodult. Vegye figyelembe, hogy a Szimbólumkezelő inicializálásakód használatával feltételezi, hogy inicializálta a szimbólumkezelőt.
TCHAR szImageName[MAX_PATH] = TEXT("foo.dll");
DWORD64 dwBaseAddr = 0;
if (SymLoadModuleEx(hProcess, // target process
NULL, // handle to image - not used
szImageName, // name of image file
NULL, // name of module - not required
dwBaseAddr, // base address - not required
0, // size of image - not required
NULL, // MODLOAD_DATA used for special cases
0)) // flags - not required
{
// SymLoadModuleEx returned success
}
else
{
// SymLoadModuleEx failed
DWORD error = GetLastError();
printf("SymLoadModuleEx returned error : %d\n", error);
}
Vegye figyelembe, hogy szImageName bármely olyan végrehajtható modul elérési útja lehet, amely hibakeresési információkat tartalmaz (.exe, .dll, .drv, .sys, .scr, .cpl, .com). Emellett dwBaseAddr a betöltendő szimbólummodul alapcíme. Ha ez az érték 0, a szimbólumkezelő a megadott szimbólummodulból szerzi be az alapcímet.
Kapcsolódó témakörök