Funzione TdhFormatProperty (tdh.h)

Formatta un valore della proprietà per la visualizzazione.

Sintassi

TDHSTATUS TdhFormatProperty(
  [in]            PTRACE_EVENT_INFO EventInfo,
  [in, optional]  PEVENT_MAP_INFO   MapInfo,
  [in]            ULONG             PointerSize,
  [in]            USHORT            PropertyInType,
  [in]            USHORT            PropertyOutType,
  [in]            USHORT            PropertyLength,
  [in]            USHORT            UserDataLength,
  [in]            PBYTE             UserData,
  [in, out]       PULONG            BufferSize,
  [out, optional] PWCHAR            Buffer,
  [out]           PUSHORT           UserDataConsumed
);

Parametri

[in] EventInfo

Struttura TRACE_EVENT_INFO contenente le informazioni sull'evento. Per ottenere questa struttura, chiamare la funzione TdhGetEventInformation.

[in, optional] MapInfo

Struttura EVENT_MAP_INFO che esegue il mapping dei valori integer e bit alle stringhe. Per ottenere questa struttura, chiamare la funzione TdhGetEventMapInformation. Per ottenere il nome della mappa, usare il membro MapNameOffset della struttura EVENT_PROPERTY_INFO. Se non vengono fornite le informazioni sulla mappa per una proprietà mappata, la funzione formatta il valore intero o bit.

[in] PointerSize

Dimensioni di un valore puntatore nei dati dell'evento. Per ottenere le dimensioni, accedere alla EVENT_RECORD. Membro EventHeader.Flags . La dimensione del puntatore è di 4 byte se il flag di EVENT_HEADER_FLAG_32_BIT_HEADER è impostato; in caso contrario, è 8 byte se il flag di EVENT_HEADER_FLAG_64_BIT_HEADER è impostato. La struttura EVENT_RECORD (evntcons.h) viene passata alla funzione [PEVENT_RECORD_CALLBACK callback].

[in] PropertyInType

Tipo di input della proprietà. Usare il membro InType della struttura EVENT_PROPERTY_INFO per impostare questo parametro.

[in] PropertyOutType

Tipo di output della proprietà. Usare il membro OutType della struttura EVENT_PROPERTY_INFO per impostare questo parametro.

[in] PropertyLength

Lunghezza, in byte, della proprietà. Usare il membro Length della struttura EVENT_PROPERTY_INFO per impostare questo parametro.

[in] UserDataLength

Dimensioni, in byte, del buffer UserData . Vedere la sezione Osservazioni.

[in] UserData

Buffer contenente i dati dell'evento. Vedere la sezione Osservazioni.

[in, out] BufferSize

Dimensioni, in byte, del buffer buffer . Se la funzione ha esito positivo, questo parametro riceve le dimensioni del buffer usato. Se il buffer è troppo piccolo, la funzione restituisce ERROR_INSUFFICIENT_BUFFER e imposta questo parametro sulla dimensione del buffer necessaria. Se la dimensione del buffer è zero in input, nessun dato viene restituito nel buffer e questo parametro riceve le dimensioni del buffer necessarie.

[out, optional] Buffer

Buffer allocato dal chiamante contenente il valore della proprietà formattato. Per determinare le dimensioni del buffer necessarie, impostare questo parametro su NULL e BufferSize su zero.

[out] UserDataConsumed

Lunghezza, in byte, dei dati dell'evento utilizzati. Usare questo valore per modificare i valori dei parametri UserData e UserDataLength . Vedere la sezione Osservazioni.

Valore restituito

Restituisce ERROR_SUCCESS se riuscito. In caso contrario, questa funzione restituisce uno dei codici restituiti seguenti oltre ad altri.

Codice restituito Descrizione
ERROR_INSUFFICIENT_BUFFER Le dimensioni del buffer pBuffer sono troppo piccole. Usare il set di dimensioni del buffer richiesto in pBufferSize per allocare un nuovo buffer.
ERROR_INVALID_PARAMETER Uno o più parametri non sono validi.
ERROR_EVT_INVALID_EVENT_DATA I dati dell'evento non corrispondono alla definizione dell'evento nel manifesto.

Commenti

In genere, si chiama questa funzione in un ciclo. Usare la TRACE_EVENT_INFO. Membro TopLevelPropertyCount per controllare il ciclo (la funzione TdhGetEventInformation restituisce la struttura TRACE_EVENT_INFO). Prima di immettere il ciclo, si impostano rispettivamente i parametri UserData e UserDataLength sul valore dei membri UserData e UserDataLength della struttura EVENT_RECORD. La struttura EVENT_RECORD viene passata alla funzione [PEVENT_RECORD_CALLBACK callback].

Determinare se la proprietà è una matrice. La proprietà è una matrice se il EVENT_PROPERTY_INFO. Il membro flags è impostato su PropertyParamCount o il membro EVENT_PROPERTY_INFO.count è maggiore di 1. Chiamare la funzione TdhFormatProperty in un ciclo in base al numero di elementi nella matrice.

Dopo aver chiamato la funzione TdhFormatProperty, utilizzare il valore del parametro UserDataConsumed per impostare i nuovi valori dei parametri UserData e UserDataLength (Sottrae UserDataConsumed da UserDataLength e usare UserDataLength per incrementare il puntatore UserDataLength).

Se la proprietà è un indirizzo IP V6, è necessario impostare il parametro PropertyLength sulle dimensioni della struttura IN6_ADDR . La proprietà viene considerata un indirizzo IP V6 se vengono soddisfatte le condizioni seguenti:

Esempio

Per un esempio che illustra come chiamare questa funzione , vedere Uso di TdhFormatProperty per l'utilizzo dei dati degli eventi.

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione tdh.h
Libreria Tdh.lib
DLL Tdh.dll