Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Si une application n’appelle pas la fonction SymInitialize avec le paramètre fInvadeProcess défini sur TRUE, il doit charger des symboles pour un module lorsqu’il est nécessaire. Pour charger un module de symboles à la demande, l’application peut appeler la fonction SymLoadModuleEx avec un chemin d’accès complet à un nom de module. Lorsque le module est chargé, le gestionnaire de symboles charge immédiatement les symboles ou reporte la charge, selon les options définies à l’aide de la fonction SymSetOptions.
Le code suivant charge un module de symboles. Notez qu’il suppose que vous avez initialisé le gestionnaire de symboles à l’aide du code dans Initialisation du gestionnaire de symboles.
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);
}
Notez que szImageName peut être un chemin d’accès à n’importe quel module exécutable disposant d’informations de débogage (.exe, .dll, .drv, .sys, .scr, .cpl, .com). En outre, dwBaseAddr est l’adresse de base du module de symboles à charger. Si cette valeur est 0, le gestionnaire de symboles obtient l’adresse de base du module de symboles spécifié.
Rubriques connexes