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