EnumerateTraceGuids-Funktion (evntrace.h)

Die EnumerateTraceGuids-Funktion ruft Informationen zu Ereignisablaufverfolgungsanbietern ab, die derzeit auf dem Computer ausgeführt werden.

Wichtig

Diese Funktion wurde durch EnumerateTraceGuidsEx ersetzt.

Syntax

ULONG WMIAPI EnumerateTraceGuids(
  [in, out] PTRACE_GUID_PROPERTIES *GuidPropertiesArray,
  [in]      ULONG                  PropertyArrayCount,
  [out]     PULONG                 GuidCount
);

Parameter

[in, out] GuidPropertiesArray

Ein Array von Zeigern auf TRACE_GUID_PROPERTIES Strukturen. Jeder Zeiger im Array muss auf einen Puffer mit Raum zeigen, um eine TRACE_GUID_PROPERTIES Struktur zu speichern.

[in] PropertyArrayCount

Anzahl der Zeiger im GuidPropertiesArray-Array .

[out] GuidCount

Empfängt die tatsächliche Anzahl von Ereignisablaufverfolgungsanbietern, die auf dem Computer registriert sind.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert ERROR_SUCCESS.

Wenn die Funktion fehlschlägt, ist der Rückgabewert einer der Systemfehlercodes. Im Folgenden sind einige häufige Fehler und deren Ursachen aufgeführt.

  • ERROR_INVALID_PARAMETER

    Es trifft eine der folgenden Bedingungen zu:

    • PropertyArrayCount ist 0
    • GuidPropertiesArray ist NULL
  • ERROR_MORE_DATA

    Das Eigenschaftenarray ist zu klein, um Informationen für alle registrierten Anbieter zu empfangen (GuidCount ist größer als PropertyArrayCount). Die Funktion füllt GuidPropertiesArray mit der Anzahl von Strukturen, die in PropertyArrayCount angegeben sind.

Hinweise

Diese Funktion gibt Informationen zu Ereignisablaufverfolgungsanbietern zurück, die (über RegisterTraceGuids, EventRegister) gestartet und noch nicht beendet wurden.

Hinweis

Verwenden Sie TdhEnumerateProviders, um Informationen zu Anbietermanifesten abzurufen, die auf dem System registriert wurden (d. h. über wevtutilregistrierte Manifeste).

Sie können die TRACE_GUID_PROPERTIES verwenden. LoggerId-Mitglied, um zu bestimmen, welche Sitzung den Anbieter zuletzt aktiviert hat, wenn TRACE_GUID_PROPERTIES. IsEnable ist TRUE.

Die Liste enthält nicht die SystemTraceProvider-Anbieter.

Beispiele

Das folgende Beispiel zeigt, wie Sie diese Funktion aufrufen.

#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;
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile evntrace.h
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

EnumerateTraceGuidsEx

QueryAllTraces

TRACE_GUID_PROPERTIES