Share via


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

Voir aussi

EnumerateTraceGuidsEx

QueryAllTraces

TRACE_GUID_PROPERTIES