Fonction TdhFormatProperty (tdh.h)
Met en forme une valeur de propriété pour l’affichage.
Syntaxe
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
);
Paramètres
[in] EventInfo
Structure TRACE_EVENT_INFO qui contient les informations d’événement. Pour obtenir cette structure, appelez la fonction TdhGetEventInformation.
[in, optional] MapInfo
Structure EVENT_MAP_INFO qui mappe les valeurs de bits et d’entiers à des chaînes. Pour obtenir cette structure, appelez la fonction TdhGetEventMapInformation. Pour obtenir le nom de la carte, utilisez le membre MapNameOffset de la structure EVENT_PROPERTY_INFO. Si vous ne fournissez pas les informations cartographiques d’une propriété mappée, la fonction met en forme la valeur entière ou bit.
[in] PointerSize
Taille d’une valeur de pointeur dans les données d’événement. Pour obtenir la taille, accédez au EVENT_RECORD. Membre EventHeader.Flags . La taille du pointeur est de 4 octets si l’indicateur EVENT_HEADER_FLAG_32_BIT_HEADER est défini ; sinon, il est de 8 octets si l’indicateur EVENT_HEADER_FLAG_64_BIT_HEADER est défini. La structure EVENT_RECORD (evntcons.h) est passée à votre [fonction de rappel PEVENT_RECORD_CALLBACK].
[in] PropertyInType
Type d’entrée de la propriété. Utilisez le membre InType de la structure EVENT_PROPERTY_INFO pour définir ce paramètre.
[in] PropertyOutType
Type de sortie de la propriété. Utilisez le membre OutType de la structure EVENT_PROPERTY_INFO pour définir ce paramètre.
[in] PropertyLength
Longueur, en octets, de la propriété. Utilisez le membre Length de la structure EVENT_PROPERTY_INFO pour définir ce paramètre.
[in] UserDataLength
Taille, en octets, de la mémoire tampon UserData . Consultez la section Notes.
[in] UserData
Mémoire tampon qui contient les données d’événement. Consultez la section Notes.
[in, out] BufferSize
Taille, en octets, de la mémoire tampon . Si la fonction réussit, ce paramètre reçoit la taille de la mémoire tampon utilisée. Si la mémoire tampon est trop petite, la fonction retourne ERROR_INSUFFICIENT_BUFFER et définit ce paramètre sur la taille de mémoire tampon requise. Si la taille de la mémoire tampon est égale à zéro lors de l’entrée, aucune donnée n’est retournée dans la mémoire tampon et ce paramètre reçoit la taille de mémoire tampon requise.
[out, optional] Buffer
Mémoire tampon allouée à l’appelant qui contient la valeur de la propriété mise en forme. Pour déterminer la taille de mémoire tampon requise, définissez ce paramètre sur NULL et BufferSize sur zéro.
[out] UserDataConsumed
Longueur, en octets, des données d’événement consommées. Utilisez cette valeur pour ajuster les valeurs des paramètres UserData et UserDataLength . Consultez la section Notes.
Valeur de retour
Retourne ERROR_SUCCESS en cas de réussite. Sinon, cette fonction retourne l’un des codes de retour suivants en plus d’autres.
Code de retour | Description |
---|---|
ERROR_INSUFFICIENT_BUFFER | La taille de la mémoire tampon pBuffer est trop petite. Utilisez la taille de mémoire tampon requise définie dans pBufferSize pour allouer une nouvelle mémoire tampon. |
ERROR_INVALID_PARAMETER | Un ou plusieurs des paramètres ne sont pas valides. |
ERROR_EVT_INVALID_EVENT_DATA | Les données d’événement ne correspondent pas à la définition d’événement dans le manifeste. |
Remarques
En règle générale, vous appelez cette fonction dans une boucle. Utilisez le TRACE_EVENT_INFO. Membre TopLevelPropertyCount pour contrôler la boucle (la fonction TdhGetEventInformation retourne la structure TRACE_EVENT_INFO). Avant d’entrer la boucle, vous définissez les paramètres UserData et UserDataLength sur la valeur des membres UserData et UserDataLength de la structure EVENT_RECORD, respectivement. La structure EVENT_RECORD est passée à votre [fonction de rappel PEVENT_RECORD_CALLBACK].
Déterminez si la propriété est un tableau. La propriété est un tableau si le EVENT_PROPERTY_INFO. Le membre Flags est défini sur PropertyParamCount ou le membre EVENT_PROPERTY_INFO.count est supérieur à 1. Appelez la fonction TdhFormatProperty dans une boucle en fonction du nombre d’éléments dans le tableau.
Après avoir appelé la fonction TdhFormatProperty , utilisez la valeur du paramètre UserDataConsumed pour définir les nouvelles valeurs des paramètres UserData et UserDataLength (Soustraire UserDataConsumed de UserDataLength et utiliser UserDataLength pour incrémenter le pointeur UserData ).
Si la propriété est une adresse IP V6, vous devez définir le paramètre PropertyLength sur la taille de la structure IN6_ADDR . La propriété est considérée comme une adresse IP V6 si les conditions suivantes sont remplies :
- Le membre InType de la structure EVENT_PROPERTY_INFO est TDH_INTYPE_BINARY
- Le membre OutType de la structure EVENT_PROPERTY_INFO est TDH_OUTTYPE_IPV6
- Le membre Length de la structure EVENT_PROPERTY_INFO est 0
Exemples
Pour obtenir un exemple qui montre comment appeler cette fonction , consultez Utilisation de TdhFormatProperty pour consommer des données d’événement.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 7 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 R2 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | tdh.h |
Bibliothèque | Tdh.lib |
DLL | Tdh.dll |