structure SYM_DUMP_PARAM (wdbgexts.h)
L’opération Ioctl IG_DUMP_SYMBOL_INFO fournit des informations sur le type d’un symbole. Lorsque vous appelez Ioctl avec IoctlType défini sur IG_DUMP_SYMBOL_INFO, IpvData doit contenir une instance de la structure SYM_DUMP_PARAM.
Syntaxe
typedef struct _SYM_DUMP_PARAM {
ULONG size;
PUCHAR sName;
ULONG Options;
ULONG64 addr;
PFIELD_INFO listLink;
union {
PVOID Context;
PVOID pBuffer;
};
PSYM_DUMP_FIELD_CALLBACK CallbackRoutine;
ULONG nFields;
PFIELD_INFO Fields;
ULONG64 ModBase;
ULONG TypeId;
ULONG TypeSize;
ULONG BufferSize;
ULONG fPointer : 2;
ULONG fArray : 1;
ULONG fStruct : 1;
ULONG fConstant : 1;
ULONG Reserved : 27;
} SYM_DUMP_PARAM, *PSYM_DUMP_PARAM;
Membres
size
Spécifie la taille, en octets, de cette structure. Sa valeur doit être sizeof(SYM_DUMP_PARAM)
.
sName
Spécifie le nom du symbole à rechercher.
Options
Spécifie les indicateurs qui déterminent le comportement de cette opération Ioctl . Pour obtenir une description de ces indicateurs, consultez Remarques.
addr
Spécifie l’adresse du symbole.
listLink
Spécifie le champ qui contient l’élément suivant dans une liste liée. Si le symbole est une entrée dans une liste liée, cette opération Ioctl peut itérer sur les éléments de la liste à l’aide du champ spécifié ici comme pointeur vers l’élément suivant de la liste. Le type de cette structure est FIELD_INFO.
La fonction de rappel spécifiée dans le membre fieldCallBack de cette structure est appelée, pendant cette opération Ioctl , pour chaque élément de la liste. Lorsqu’elle est appelée, cette structure linkList est transmise avec les membres renseignés pour l’entrée de liste ainsi que le contenu du membre Context .
DBG_DUMP_LIST devez être défini dans Options pour indiquer à ce Ioctl d’itérer sur la liste.
Context
Spécifie un pointeur passé à la fonction de rappel dans le membre CallbackRoutine et aux fonctions de rappel dans le membre fieldCallBack des membres linkList et Fields .
pBuffer
Spécifie une mémoire tampon qui reçoit des informations sur le symbole. Cette mémoire tampon n’est utilisée que si l’indicateur DBG_DUMP_COPY_TYPE_DATA est défini dans Options. La taille de cette mémoire tampon est spécifiée dans BufferSize.
CallbackRoutine
Spécifie une fonction de rappel appelée par le moteur. Le moteur fournit à la fonction de rappel des informations sur le symbole et ses membres.
nFields
Spécifie le nombre d’entrées dans le tableau Champs .
Fields
Spécifie un tableau de structures FIELD_INFO qui contrôlent le comportement de cette opération pour les membres individuels du symbole spécifié. Pour plus d’informations, consultez FIELD_INFO.
ModBase
Reçoit l’emplacement dans la mémoire de la cible du début du module qui contient le symbole.
TypeId
Reçoit l’ID de type du symbole.
TypeSize
Reçoit la taille, en octets, du symbole dans la mémoire de la cible.
BufferSize
Spécifie la taille, en octets, de la mémoire tampon pBuffer .
fPointer
Reçoit une valeur booléenne qui indique si le symbole est un pointeur. fPointer a la valeur FALSE si le symbole n’est pas un pointeur. Il est 1 si le symbole est un pointeur 32 bits et 3 si le symbole est un pointeur 64 bits.
fArray
Reçoit une valeur booléenne qui indique si le symbole est un tableau. fArray a la valeur FALSE si le symbole n’est pas un tableau et TRUE s’il l’est.
fStruct
Reçoit une valeur booléenne qui indique si le symbole est une structure. fStruct a la valeur FALSE si le symbole n’est pas une structure et TRUE s’il l’est.
fConstant
Reçoit une valeur booléenne qui indique si le symbole est une constante. fConstant a la valeur FALSE si le symbole n’est pas une constante et TRUE s’il l’est.
Reserved
Remarques
Les paramètres de l’opération Ioctl IG_DUMP_SYMBOL_INFO sont les membres de la structure SYM_DUMP_PARAM.
Cette opération Ioctl recherche les informations du module pour le symbole, en chargeant les symboles du module si possible.
Si nFields est égal à zéro et que DBG_DUMP_CALL_FOR_EACH est défini dans Options, la fonction de rappel spécifiée dans CallbackRoutine est appelée pour chaque champ du symbole.
Si nFields est différent de zéro et que DBG_DUMP_CALL_FOR_EACH est défini dans Options, les rappels sont effectués uniquement pour les champs correspondant au membre fName de l’un des éléments Fields . Si un champ correspond à un membre fName et que le membre fieldCallBack n’a pas la valeur NULL, la fonction de rappel dans fieldCallBack est appelée ; si elle est NULL, la fonction de rappel dans CallbackRoutine est appelée à la place.
Les indicateurs de bits DBG_DUMP_XXX sont utilisés par le membre Options de la structure SYM_DUMP_PARAM pour contrôler le comportement de l’opération Ioctl IG_DUMP_SYMBOL_INFO.
Les indicateurs suivants peuvent être présents.
Indicateur | Effet |
---|---|
DBG_DUMP_NO_INDENT | Les membres ne sont pas mis en retrait dans la sortie. |
DBG_DUMP_NO_OFFSET | Les décalages ne sont pas imprimés. |
DBG_DUMP_VERBOSE | Sortie détaillée. |
DBG_DUMP_CALL_FOR_EACH | Une fonction de rappel est appelée pour chaque membre. |
DBG_DUMP_LIST | Le symbole est une entrée dans une liste liée et l’opération Ioctl IG_DUMP_SYMBOL_INFO itérera sur cette liste. La description du membre qui pointe vers l’élément suivant de la liste est spécifiée par le membre linkList de la structure SYM_DUMP_PARAM. |
DBG_DUMP_NO_PRINT | Rien n’est imprimé (seules les fonctions de rappel sont appelées et les copies de données sont effectuées). |
DBG_DUMP_GET_SIZE_ONLY | L’opération Ioctl retourne la taille du symbole uniquement ; il n’imprimera pas les informations des membres ni les fonctions de rappel de rappel. |
DBG_DUMP_COMPACT_OUT | Les nouvelles lignes ne sont pas imprimées après chaque membre. |
DBG_DUMP_ARRAY | Le symbole est un tableau. Le nombre d’éléments dans le tableau est spécifié par la taille du membre listLink-> de la structure SYM_DUMP_PARAM. |
DBG_DUMP_ADDRESS_OF_FIELD | La valeur de addr est en fait l’adresse du membre listLink->fName de la structure SYM_DUMP_PARAM et non le début du symbole. |
DBG_DUMP_ADDRESS_AT_END | La valeur de l’addr est en fait l’adresse à la fin du symbole et non le début du symbole. |
DBG_DUMP_COPY_TYPE_DATA | La valeur du symbole est copiée dans le membre pBuffer. Cela ne peut être utilisé que pour les types primitifs, par exemple ULONG ou PVOID, il ne peut pas être utilisé avec des structures. |
DBG_DUMP_READ_PHYSICAL | La valeur du symbole est lue directement à partir de la mémoire physique de la cible. |
DBG_DUMP_FUNCTION_FORMAT |
Lors de la mise en forme d’un symbole qui a un type de fonction, le format de fonction est utilisé, par exemple, function(arg1, arg2, ...)
|
DBG_DUMP_BLOCK_RECURSE | Récursez à travers des structures imbriquées ; mais ne suivez pas les pointeurs. |
En outre, le résultat de la macro DBG_DUMP_RECUR_LEVEL(Level) peut être ajouté au jeu de bits pour spécifier la profondeur dans les structures à récurrence. Le niveau peut être un nombre compris entre 0 et 15.
Les indicateurs de bits DBG_DUMP_FIELD_XXX sont utilisés par le membre fOptions de la structure FIELD_INFO pour contrôler le comportement de l’opérationIoctl IG_DUMP_SYMBOL_INFO.
Les indicateurs suivants peuvent être présents.
Indicateur | Effet |
---|---|
DBG_DUMP_FIELD_CALL_BEFORE_PRINT | La fonction de rappel est appelée avant l’impression du membre. |
DBG_DUMP_FIELD_NO_CALLBACK_REQ | Aucune fonction de rappel n’est appelée. |
DBG_DUMP_FIELD_RECUR_ON_THIS | Les sous-membres du membre sont traités. |
DBG_DUMP_FIELD_FULL_NAME | fName doit correspondre complètement, au lieu d’avoir simplement un préfixe correspondant, pour que le membre soit traité. |
DBG_DUMP_FIELD_ARRAY | Imprimez des éléments de tableau d’un membre du tableau. |
DBG_DUMP_FIELD_COPY_FIELD_DATA | La valeur du membre est copiée dans pBuffer. |
DBG_DUMP_FIELD_RETURN_ADDRESS |
Pendant un rappel ou lorsque Ioctl retourne, le FIELD_INFO. le membre d’adresse contient l’adresse du membre du symbole.
Si aucune adresse n’est fournie pour le type, FIELD_INFO. address contient le décalage total du membre par rapport au début du type. |
DBG_DUMP_FIELD_SIZE_IN_BITS | Pour un champ bit, retournez le décalage et la taille en bits au lieu d’octets. |
DBG_DUMP_FIELD_NO_PRINT | N’imprimez pas ce membre (seule la fonction de rappel est appelée et des copies de données sont effectuées). |
DBG_DUMP_FIELD_DEFAULT_STRING DBG_DUMP_FIELD_WCHAR_STRING DBG_DUMP_FIELD_MULTI_STRING DBG_DUMP_FIELD_GUID_STRING | Si le membre est un pointeur, il est imprimé sous la forme d’une chaîne, d’une chaîne ANSI, d’une chaîne WCHAR, d’une chaîne MULTI ou d’un GUID. |
En outre, le résultat de la macro DBG_DUMP_RECUR_LEVEL(Level) peut être ajouté au jeu de bits pour spécifier la profondeur dans les structures à récurrence. Le niveau peut être un nombre compris entre 0 et 15.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | wdbgexts.h (inclure Wdbgexts.h, Dbgeng.h) |