Partager via


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)

Voir aussi

DBG_DUMP_XXX

FIELD_INFO

codes d’erreur IG_DUMP_SYMBOL_INFO

Ioctl