Fonction EnumerateTraceGuids (evntrace.h)
La fonction EnumerateTraceGuids récupère des informations sur les fournisseurs de trace d’événements qui s’exécutent actuellement sur l’ordinateur.
Important
Cette fonction a été remplacée par EnumerateTraceGuidsEx.
Syntaxe
ULONG WMIAPI EnumerateTraceGuids(
[in, out] PTRACE_GUID_PROPERTIES *GuidPropertiesArray,
[in] ULONG PropertyArrayCount,
[out] PULONG GuidCount
);
Paramètres
[in, out] GuidPropertiesArray
Tableau de pointeurs vers TRACE_GUID_PROPERTIES structures. Chaque pointeur du tableau doit pointer vers une mémoire tampon avec de l’espace pour stocker une structure TRACE_GUID_PROPERTIES .
[in] PropertyArrayCount
Nombre de pointeurs dans le tableau GuidPropertiesArray .
[out] GuidCount
Reçoit le nombre réel de fournisseurs de suivi d’événements inscrits sur l’ordinateur.
Valeur retournée
Si la fonction réussit, la valeur de retour est ERROR_SUCCESS.
Si la fonction échoue, la valeur de retour est l’un des codes d’erreur système. Voici quelques erreurs courantes et leurs causes.
ERROR_INVALID_PARAMETER
Une des conditions suivantes est vraie :
- PropertyArrayCount est égal à zéro
- GuidPropertiesArray a la valeur NULL
ERROR_MORE_DATA
Le tableau de propriétés est trop petit pour recevoir des informations pour tous les fournisseurs inscrits (GuidCount est supérieur à PropertyArrayCount). La fonction remplit GuidPropertiesArray avec le nombre de structures spécifiées dans PropertyArrayCount.
Notes
Cette fonction retourne des informations sur les fournisseurs de trace d’événements qui ont été démarrés (via RegisterTraceGuids, EventRegister) et qui n’ont pas encore été arrêtés.
Notes
Pour obtenir des informations sur les manifestes de fournisseur qui ont été inscrits sur le système (c’est-à-dire les manifestes enregistrés via wevtutil
), utilisez TdhEnumerateProviders.
Vous pouvez utiliser le TRACE_GUID_PROPERTIES. Membre LoggerId pour déterminer quelle session a récemment activé le fournisseur si TRACE_GUID_PROPERTIES. IsEnable a la valeur TRUE.
La liste n’inclut pas les fournisseurs SystemTraceProvider.
Exemples
L’exemple suivant montre comment appeler cette fonction.
#include <windows.h>
#include <evntrace.h>
#include <vector>
#include <stdio.h>
int
wmain()
{
ULONG status = 0;
try
{
ULONG guidCount;
std::vector<TRACE_GUID_PROPERTIES> guidPropValues;
std::vector<TRACE_GUID_PROPERTIES*> guidPropPointers;
// First call is just to get the actual count, so allocate a small buffer.
guidCount = 1;
// May need to retry multiple times since new providers could be added
// between calls.
for (;;)
{
ULONG const allocated = guidCount;
guidPropValues.resize(allocated);
guidPropPointers.resize(allocated);
// Initialize the pointers to point at the values.
for (ULONG i = 0; i != allocated; i += 1)
{
guidPropPointers[i] = &guidPropValues[i];
}
guidCount = 0;
status = EnumerateTraceGuids(guidPropPointers.data(), allocated, &guidCount);
if (status != ERROR_MORE_DATA)
{
guidPropValues.resize(guidCount);
break;
}
}
if (status != ERROR_SUCCESS)
{
printf("EnumerateTraceGuids error: %u\n", status);
}
else
{
printf("GuidCount = %lu\n", guidCount);
for (auto const& v : guidPropValues)
{
printf("%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x - %hs\n",
v.Guid.Data1, v.Guid.Data2, v.Guid.Data3,
v.Guid.Data4[0], v.Guid.Data4[1],
v.Guid.Data4[2], v.Guid.Data4[3], v.Guid.Data4[4],
v.Guid.Data4[5], v.Guid.Data4[6], v.Guid.Data4[7],
v.IsEnable ? "Enabled" : "Disabled");
}
}
}
catch (std::bad_alloc const&)
{
printf("Out of memory!\n");
status = ERROR_OUTOFMEMORY;
}
return status;
}
Spécifications
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | evntrace.h |
Bibliothèque | Advapi32.lib |
DLL | Advapi32.dll |