Compartilhar via


PDEBUG_EXTENSION_KNOWN_STRUCT função de retorno de chamada (dbgeng.h)

O mecanismo chama a função de retorno de chamada KnownStructOutput para solicitar informações sobre estruturas que a DLL de extensão pode formatar para impressão. O mecanismo chama essa função pelos seguintes motivos.

  • Obtenha uma lista de estruturas que a DLL pode formatar para impressão.
  • Obtenha uma representação de linha única de uma estrutura específica.
  • Pergunte se uma estrutura específica deve ter seu nome impresso junto com sua representação de linha única.
'''cpp CALLBACK* PDEBUG_EXTENSION_KNOWN_STRUCT KnownStructOutput; '''

Sintaxe

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

Um dos valores a seguir, dependendo de quais informações o mecanismo deseja obter da DLL de extensão.

Valor Descrição
DEBUG_KNOWN_STRUCT_GET_NAMES Obtenha uma lista de nomes de estrutura.
DEBUG_KNOWN_STRUCT_SUPPRESS_TYPE_NAME Pergunte se uma estrutura deve ter seu nome impresso.
DEBUG_KNOWN_STRUCT_GET_SINGLE_LINE_OUTPUT Obtenha uma representação de linha única de uma estrutura.

[in] Offset

Ao obter uma lista de nomes: Utilizadas.

Ao perguntar se um nome deve ser impresso: Utilizadas.

Ao obter uma representação de linha única: Especifica o local no espaço de endereço de memória do destino da estrutura a ser impressa.

[in] TypeName

Ao obter uma lista de nomes: Utilizadas.

Ao perguntar se um nome deve ser impresso: Especifica o nome da estrutura. Esse é um dos nomes retornados da consulta DEBUG_KNOWN_STRUCT_GET_NAMES.

Ao obter uma representação de linha única: Especifica o nome da estrutura. Esse é um dos nomes retornados da consulta DEBUG_KNOWN_STRUCT_GET_NAMES.

[out] Buffer

Ao obter uma lista de nomes: Recebe uma lista dos nomes das estruturas que a extensão pode formatar para impressão. Um caractere nulo deve aparecer entre cada par de nomes. A lista deve ser encerrada com dois caracteres nulos. O número de caracteres gravados nesse buffer não deve exceder o valor de BufferSize.

Ao perguntar se um nome deve ser impresso: Utilizadas.

Ao obter uma representação de linha única: Recebe uma representação da estrutura, identificada por StructName e Address, como uma cadeia de caracteres. O número de caracteres gravados nesse buffer não deve exceder o valor de BufferSize.

[in, out] BufferChars

Ao obter uma lista de nomes: Na entrada, especifica o tamanho, em caracteres, de Buffer. Na saída, se o buffer for muito pequeno, receberá o tamanho do buffer necessário.

Ao perguntar se um nome deve ser impresso: Utilizadas.

Ao obter uma representação de linha única: Na entrada, especifica o tamanho, em caracteres, de Buffer. Na saída, se o buffer for muito pequeno, receberá o tamanho do buffer necessário.

Retornar valor

Código de retorno Descrição
S_OK
Ao obter uma lista de nomes: o buffer contém a lista solicitada de nomes.

Ao perguntar se um nome deve ser impresso: A impressão do nome deve ser suprimida. Ou seja, o nome não deve ser impresso.

Ao obter uma representação de linha única: o buffer contém a representação de linha única solicitada.

S_FALSE
Ao obter uma lista de nomes: BufferSize era muito pequeno na entrada. Na saída, BufferSize contém o tamanho do buffer necessário.

Ao perguntar se um nome deve ser impresso: A impressão do nome não deve ser suprimida. Ou seja, o nome deve ser impresso.

Ao obter uma representação de linha única: BufferSize era muito pequeno na entrada. Na saída, BufferSize contém o tamanho do buffer necessário.

 

Todos os outros valores retornados indicam que a função falhou. O mecanismo continuará ignorando o conteúdo do Buffer.

Comentários

Essa função é opcional. Uma DLL de extensão só precisará exportar KnownStructOutput se ela tiver a capacidade de formatar estruturas especiais para impressão em uma única linha. O mecanismo procura essa função por nome na DLL de extensão.

Depois de inicializar a DLL de extensão, o mecanismo chama essa função para consultar a DLL para obter a lista de nomes de estrutura que ele sabe imprimir. Em seguida, sempre que o mecanismo imprime um resumo de uma das estruturas cujo nome está na lista, ele chama essa função para formatar a estrutura para impressão.

KnownStructOutput é chamado PDEBUG_EXTENSION_KNOWN_STRUCT no arquivo de cabeçalho Dbgeng.h.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho dbgeng.h

Confira também

DebugExtensionInitialize