Condividi tramite


PDEBUG_EXTENSION_KNOWN_STRUCT funzione di callback (dbgeng.h)

Il motore chiama il KnownStructOutput funzione di callback per richiedere informazioni sulle strutture che la DLL di estensione può formattare per la stampa. Il motore chiama questa funzione per i motivi seguenti.

  • Ottenere un elenco di strutture che la DLL può formattare per la stampa.
  • Ottenere una rappresentazione a riga singola di una particolare struttura.
  • Chiedere se un determinato nome deve essere stampato insieme alla relativa rappresentazione a riga singola.
'''cpp CALLBACK* PDEBUG_EXTENSION_KNOWN_STRUCT KnownStructOutput; ```

Sintassi

PDEBUG_EXTENSION_KNOWN_STRUCT PdebugExtensionKnownStruct;

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

Parametri

[in] Flags

Uno dei valori seguenti, a seconda delle informazioni che il motore vuole ottenere dalla DLL di estensione.

Valore Descrizione
DEBUG_KNOWN_STRUCT_GET_NAMES Ottenere un elenco di nomi di struttura.
DEBUG_KNOWN_STRUCT_SUPPRESS_TYPE_NAME Chiedere se un nome deve essere stampato in una struttura.
DEBUG_KNOWN_STRUCT_GET_SINGLE_LINE_OUTPUT Ottenere una rappresentazione a riga singola di una struttura.

[in] Offset

Quando si ottiene un elenco di nomi: inutilizzato.

Quando si chiede se deve essere stampato un nome: inutilizzato.

Quando si ottiene una rappresentazione a riga singola: Specifica la posizione nello spazio indirizzi di memoria della destinazione della struttura da stampare.

[in] TypeName

Quando si ottiene un elenco di nomi: inutilizzato.

Quando si chiede se deve essere stampato un nome: Specifica il nome della struttura. Si tratta di uno dei nomi restituiti dalla query di DEBUG_KNOWN_STRUCT_GET_NAMES.

Quando si ottiene una rappresentazione a riga singola: Specifica il nome della struttura. Si tratta di uno dei nomi restituiti dalla query di DEBUG_KNOWN_STRUCT_GET_NAMES.

[out] Buffer

Quando si ottiene un elenco di nomi: Riceve un elenco dei nomi delle strutture che l'estensione può formattare per la stampa. Un carattere Null deve essere visualizzato tra ogni coppia di nomi. L'elenco deve essere terminato con due caratteri Null. Il numero di caratteri scritti in questo buffer non deve superare il valore di BufferSize.

Quando si chiede se deve essere stampato un nome: inutilizzato.

Quando si ottiene una rappresentazione a riga singola: Riceve una rappresentazione della struttura, identificata da StructName e Address, come stringa. Il numero di caratteri scritti in questo buffer non deve superare il valore di BufferSize.

[in, out] BufferChars

Quando si ottiene un elenco di nomi: Su input, specifica le dimensioni, in caratteri, di Buffer. In caso di output, se il buffer è troppo piccolo, riceve le dimensioni del buffer necessarie.

Quando si chiede se deve essere stampato un nome: inutilizzato.

Quando si ottiene una rappresentazione a riga singola: In input, specifica le dimensioni, in caratteri, di Buffer. In caso di output, se il buffer è troppo piccolo, riceve le dimensioni del buffer necessarie.

Valore restituito

Codice restituito Descrizione
S_OK
Quando si ottiene un elenco di nomi: Buffer contiene l'elenco di nomi richiesto.

Quando si chiede se deve essere stampato un nome: La stampa del nome deve essere eliminata. Ovvero, il nome non deve essere stampato.

Quando si ottiene una rappresentazione a riga singola: Buffer contiene la rappresentazione a riga singola richiesta.

S_FALSE
Quando si ottiene un elenco di nomi: bufferSize era troppo piccolo per l'input. Nell'output BufferSize contiene le dimensioni del buffer necessarie.

Quando si chiede se deve essere stampato un nome: La stampa del nome non deve essere eliminata. Ovvero, il nome deve essere stampato.

Quando si ottiene una rappresentazione a riga singola: bufferSize era troppo piccolo per l'input. Nell'output BufferSize contiene le dimensioni del buffer necessarie.

 

Tutti gli altri valori restituiti indicano che la funzione non è riuscita. Il motore continuerà a ignorare il contenuto di Buffer.

Osservazioni

Questa funzione è facoltativa. Una DLL di estensione deve solo esportare KnownStructOutput se ha la possibilità di formattare strutture speciali per la stampa su una singola riga. Il motore cerca questa funzione in base al nome nella DLL dell'estensione.

Dopo aver inizializzato la DLL di estensione, il motore chiama questa funzione per eseguire una query sulla DLL per l'elenco dei nomi di struttura che sa stampare. Quindi, ogni volta che il motore stampa un riepilogo di una delle strutture il cui nome si trova nell'elenco, chiama questa funzione per formattare la struttura per la stampa.

KnownStructOutput viene chiamato PDEBUG_EXTENSION_KNOWN_STRUCT nel file di intestazione Dbgeng.h.

Fabbisogno

Requisito Valore
piattaforma di destinazione Desktop
intestazione dbgeng.h

Vedere anche

DebugExtensionInitialize