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