Compartir a través de


PDEBUG_EXTENSION_KNOWN_STRUCT función de devolución de llamada (dbgeng.h)

El motor llama a la función de devolución de llamada KnownStructOutput para solicitar información sobre las estructuras a las que el archivo DLL de extensión puede dar formato para imprimir. El motor llama a esta función por los siguientes motivos.

  • Obtenga una lista de estructuras a las que el archivo DLL puede dar formato para imprimir.
  • Obtiene una representación de una sola línea de una estructura determinada.
  • Pregunte si una estructura determinada debe tener su nombre impreso junto con su representación de una sola línea.
'''cpp CALLBACK* PDEBUG_EXTENSION_KNOWN_STRUCT KnownStructOutput; '''

Sintaxis

PDEBUG_EXTENSION_KNOWN_STRUCT PdebugExtensionKnownStruct;

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

Parámetros

[in] Flags

Uno de los valores siguientes, en función de la información que el motor quiera obtener del archivo DLL de extensión.

Valor Descripción
DEBUG_KNOWN_STRUCT_GET_NAMES Obtiene una lista de nombres de estructura.
DEBUG_KNOWN_STRUCT_SUPPRESS_TYPE_NAME Pregunte si una estructura debe tener su nombre impreso.
DEBUG_KNOWN_STRUCT_GET_SINGLE_LINE_OUTPUT Obtiene una representación de una sola línea de una estructura.

[in] Offset

Al obtener una lista de nombres: Inusitado.

Al preguntar si se debe imprimir un nombre: Inusitado.

Al obtener una representación de una sola línea: Especifica la ubicación en el espacio de direcciones de memoria del destino de la estructura que se va a imprimir.

[in] TypeName

Al obtener una lista de nombres: Inusitado.

Al preguntar si se debe imprimir un nombre: Especifica el nombre de la estructura. Se trata de uno de los nombres devueltos por la consulta DEBUG_KNOWN_STRUCT_GET_NAMES.

Al obtener una representación de una sola línea: Especifica el nombre de la estructura. Se trata de uno de los nombres devueltos por la consulta DEBUG_KNOWN_STRUCT_GET_NAMES.

[out] Buffer

Al obtener una lista de nombres: Recibe una lista de los nombres de las estructuras a las que puede dar formato la extensión para imprimir. Un carácter nulo debe aparecer entre cada par de nombres. La lista debe terminarse con dos caracteres NULL. El número de caracteres escritos en este búfer no debe superar el valor de BufferSize.

Al preguntar si se debe imprimir un nombre: Inusitado.

Al obtener una representación de una sola línea: Recibe una representación de la estructura, identificada por StructName y Address, como una cadena. El número de caracteres escritos en este búfer no debe superar el valor de BufferSize.

[in, out] BufferChars

Al obtener una lista de nombres: En la entrada, especifica el tamaño, en caracteres, del búfer. En la salida, si el búfer es demasiado pequeño, recibe el tamaño de búfer necesario.

Al preguntar si se debe imprimir un nombre: Inusitado.

Al obtener una representación de una sola línea: En la entrada, especifica el tamaño, en caracteres, del búfer. En la salida, si el búfer es demasiado pequeño, recibe el tamaño de búfer necesario.

Valor devuelto

Código devuelto Descripción
S_OK
Al obtener una lista de nombres: el búfer contiene la lista de nombres solicitada.

Al preguntar si se debe imprimir un nombre: Se debe suprimir la impresión del nombre. Es decir, el nombre no debe imprimirse.

Al obtener una representación de una sola línea: el búfer contiene la representación de una sola línea solicitada.

S_FALSE
Al obtener una lista de nombres: BufferSize era demasiado pequeño en la entrada. En la salida, BufferSize contiene el tamaño de búfer necesario.

Al preguntar si se debe imprimir un nombre: No se debe suprimir la impresión del nombre. Es decir, se debe imprimir el nombre.

Al obtener una representación de una sola línea: BufferSize era demasiado pequeño en la entrada. En la salida, BufferSize contiene el tamaño de búfer necesario.

 

Todos los demás valores devueltos indican que se produjo un error en la función. El motor seguirá ignorando el contenido de Buffer.

Comentarios

Esta función es opcional. Un archivo DLL de extensión solo necesita exportar KnownStructOutput si tiene la capacidad de dar formato a estructuras especiales para imprimir en una sola línea. El motor busca esta función por nombre en el archivo DLL de extensión.

Después de inicializar el archivo DLL de extensión, el motor llama a esta función para consultar el archivo DLL de la lista de nombres de estructura que sabe cómo imprimir. A continuación, cada vez que el motor imprime un resumen de una de las estructuras cuyo nombre está en la lista, llama a esta función para dar formato a la estructura para imprimir.

KnownStructOutput se llama PDEBUG_EXTENSION_KNOWN_STRUCT en el archivo de encabezado Dbgeng.h.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado dbgeng.h

Consulte también

DepurarExtensionInitialize