Partager via


PDEBUG_EXTENSION_KNOWN_STRUCT fonction de rappel (dbgeng.h)

Le moteur appelle la fonction de rappel KnownStructOutput pour demander des informations sur les structures que la DLL d’extension peut mettre en forme pour l’impression. Le moteur appelle cette fonction pour les raisons suivantes.

  • Obtenez la liste des structures que la DLL peut mettre en forme pour l’impression.
  • Obtenir une représentation à une seule ligne d’une structure particulière.
  • Demandez si le nom d’une structure particulière doit être imprimé avec sa représentation à une seule ligne.
''cpp CALLBACK* PDEBUG_EXTENSION_KNOWN_STRUCT KnownStructOutput ; '''

Syntaxe

PDEBUG_EXTENSION_KNOWN_STRUCT PdebugExtensionKnownStruct;

HRESULT PdebugExtensionKnownStruct(
  [in]      ULONG Flags,
  [in]      ULONG64 Offset,
  [in]      PSTR TypeName,
  [out]     PSTR Buffer,
  [in, out] PULONG BufferChars
)
{...}

Paramètres

[in] Flags

L’une des valeurs suivantes, en fonction des informations que le moteur souhaite obtenir à partir de la DLL d’extension.

Valeur Description
DEBUG_KNOWN_STRUCT_GET_NAMES Obtenez la liste des noms de structure.
DEBUG_KNOWN_STRUCT_SUPPRESS_TYPE_NAME Demandez si le nom d’une structure doit être imprimé.
DEBUG_KNOWN_STRUCT_GET_SINGLE_LINE_OUTPUT Obtenir une représentation monoligne d’une structure.

[in] Offset

Lors de l’obtention d’une liste de noms : Inutilisés.

Lorsque vous demandez si un nom doit être imprimé : Inutilisés.

Lors de l’obtention d’une représentation monoligne : Spécifie l’emplacement dans l’espace d’adressage mémoire de la cible de la structure à imprimer.

[in] TypeName

Lors de l’obtention d’une liste de noms : Inutilisés.

Lorsque vous demandez si un nom doit être imprimé : Spécifie le nom de la structure. Il s’agit de l’un des noms retournés par la requête DEBUG_KNOWN_STRUCT_GET_NAMES.

Lors de l’obtention d’une représentation monoligne : Spécifie le nom de la structure. Il s’agit de l’un des noms retournés par la requête DEBUG_KNOWN_STRUCT_GET_NAMES.

[out] Buffer

Lors de l’obtention d’une liste de noms : Reçoit une liste des noms des structures que l’extension peut mettre en forme pour l’impression. Un caractère null doit apparaître entre chaque paire de noms. La liste doit être terminée avec deux caractères null. Le nombre de caractères écrits dans cette mémoire tampon ne doit pas dépasser la valeur de BufferSize.

Lorsque vous demandez si un nom doit être imprimé : Inutilisés.

Lors de l’obtention d’une représentation monoligne : Reçoit une représentation de la structure, identifiée par StructName et Address, en tant que chaîne. Le nombre de caractères écrits dans cette mémoire tampon ne doit pas dépasser la valeur de BufferSize.

[in, out] BufferChars

Lors de l’obtention d’une liste de noms : Lors de l’entrée, spécifie la taille, en caractères, de La mémoire tampon. En sortie, si la mémoire tampon est trop petite, reçoit la taille de mémoire tampon requise.

Lorsque vous demandez si un nom doit être imprimé : Inutilisés.

Lors de l’obtention d’une représentation monoligne : Lors de l’entrée, spécifie la taille, en caractères, de La mémoire tampon. En sortie, si la mémoire tampon est trop petite, reçoit la taille de mémoire tampon requise.

Valeur retournée

Code de retour Description
S_OK
Lors de l’obtention d’une liste de noms : La mémoire tampon contient la liste de noms demandée.

Lorsque vous demandez si un nom doit être imprimé : L’impression du nom doit être supprimée. Autrement dit, le nom ne doit pas être imprimé.

Lors de l’obtention d’une représentation à une seule ligne : la mémoire tampon contient la représentation à une seule ligne demandée.

S_FALSE
Lors de l’obtention d’une liste de noms : BufferSize était trop petit en entrée. En sortie, BufferSize contient la taille de mémoire tampon requise.

Lorsque vous demandez si un nom doit être imprimé : L’impression du nom ne doit pas être supprimée. Autrement dit, le nom doit être imprimé.

Lors de l’obtention d’une représentation monoligne : BufferSize était trop petit en entrée. En sortie, BufferSize contient la taille de mémoire tampon requise.

 

Toutes les autres valeurs de retour indiquent que la fonction a échoué. Le moteur continue d’ignorer le contenu de La mémoire tampon.

Remarques

Cette fonction est facultative. Une DLL d’extension doit uniquement exporter KnownStructOutput si elle a la possibilité de mettre en forme des structures spéciales pour l’impression sur une seule ligne. Le moteur recherche cette fonction par nom dans la DLL d’extension.

Après avoir initialisé la DLL d’extension, le moteur appelle cette fonction pour interroger la DLL pour obtenir la liste des noms de structure qu’elle sait imprimer. Ensuite, chaque fois que le moteur imprime un résumé de l’une des structures dont le nom figure dans la liste, il appelle cette fonction pour mettre en forme la structure pour l’impression.

KnownStructOutput est appelé PDEBUG_EXTENSION_KNOWN_STRUCT dans le fichier d’en-tête Dbgeng.h.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête dbgeng.h

Voir aussi

DebugExtensionInitialize