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.
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 |
---|---|
|
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. |
|
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 |