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 wevtutil
registrierte 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 |