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:
- Il membro InType della struttura EVENT_PROPERTY_INFO è TDH_INTYPE_BINARY
- Il membro OutType della struttura EVENT_PROPERTY_INFO è TDH_OUTTYPE_IPV6
- Il membro Length della struttura EVENT_PROPERTY_INFO è 0
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 |