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 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 siguientes valores, dependiendo de la información que el motor quiere obtener de la 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: sin usar.

Al preguntar si se debe imprimir un nombre: Sin usar.

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: sin usar.

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

[out] Buffer

Al obtener una lista de nombres: Recibe una lista de los nombres de las estructuras que la extensión puede dar formato para imprimir. Un carácter NULL 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: Sin usar.

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, de Buffer. 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: Sin usar.

Al obtener una representación de una sola línea: Entrada On, especifica el tamaño, en caracteres, de Buffer. 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: buffer contiene la lista solicitada de nombres.

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: buffer 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ña 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 Búfer.

Observaciones

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 Valor
de la plataforma de destino de Escritorio
encabezado de dbgeng.h

Consulte también

DepurarExtensionInitialize