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 une structure particulière doit avoir son nom 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 Obtenir la liste des noms de structure.
DEBUG_KNOWN_STRUCT_SUPPRESS_TYPE_NAME Demandez si une structure doit avoir son nom imprimé.
DEBUG_KNOWN_STRUCT_GET_SINGLE_LINE_OUTPUT Obtenir une représentation à une seule ligne d’une structure.

[in] Offset

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

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

Lors de l’obtention d’une représentation sur une seule ligne : spécifie l’emplacement dans l’espace d’adressage mémoire de la structure à imprimer.

[in] TypeName

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

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 à une seule ligne : 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 arrêté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é.

Lors de l’obtention d’une représentation à ligne unique : reçoit une représentation de la structure, identifiée par StructName et Adresse, sous forme de 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, du 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é.

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

Valeur de retour

Retourner le code Description
S_OK
Lors de l’obtention d’une liste de noms : tampon contient la liste demandée des noms.

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 sur une seule ligne : tampon contient la représentation à une seule ligne demandée.

S_FALSE
Lors de l’obtention d’une liste de noms : BufferSize était trop petite lors de l’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 sur une seule ligne : BufferSize était trop petite lors de l’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 continuera d’ignorer le contenu de 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’il sait imprimer. Ensuite, chaque fois que le moteur imprime un résumé de l’une des structures dont le nom se trouve dans la liste, il appelle cette fonction pour mettre en forme la structure pour l’impression.

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

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête dbgeng.h

Voir aussi

DebugExtensionInitialize