Функция EnumerateTraceGuids (evntrace.h)
Функция EnumerateTraceGuids извлекает сведения о поставщиках трассировки событий, которые в настоящее время выполняются на компьютере.
Важно!
Эта функция заменена элементом EnumerateTraceGuidsEx.
Синтаксис
ULONG WMIAPI EnumerateTraceGuids(
[in, out] PTRACE_GUID_PROPERTIES *GuidPropertiesArray,
[in] ULONG PropertyArrayCount,
[out] PULONG GuidCount
);
Параметры
[in, out] GuidPropertiesArray
Массив указателей на структуры TRACE_GUID_PROPERTIES . Каждый указатель в массиве должен указывать на буфер с пространством для хранения структуры TRACE_GUID_PROPERTIES .
[in] PropertyArrayCount
Количество указателей в массиве GuidPropertiesArray .
[out] GuidCount
Получает фактическое количество поставщиков трассировки событий, зарегистрированных на компьютере.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет ERROR_SUCCESS.
Если функция завершается сбоем, возвращаемое значение является одним из кодов системных ошибок. Ниже приведены некоторые распространенные ошибки и их причины.
ERROR_INVALID_PARAMETER
Выполняется одно из следующих условий.
- PropertyArrayCount равно нулю
- GuidPropertiesArray имеет значение NULL
ERROR_MORE_DATA
Массив свойств слишком мал для получения сведений для всех зарегистрированных поставщиков (GuidCount больше PropertyArrayCount). Функция заполняет GuidPropertiesArray количеством структур, указанных в PropertyArrayCount.
Комментарии
Эта функция возвращает сведения о поставщиках трассировки событий, которые были запущены (через RegisterTraceGuids, EventRegister) и еще не остановлены.
Примечание
Чтобы получить сведения о манифестах поставщика, зарегистрированных в системе (т. е. манифестах, зарегистрированных через wevtutil
), используйте TdhEnumerateProviders.
Можно использовать TRACE_GUID_PROPERTIES. Член LoggerId, чтобы определить, какой сеанс последний раз включил поставщик , если TRACE_GUID_PROPERTIES. IsEnable имеет значение TRUE.
Список не будет включать поставщиков SystemTraceProvider.
Примеры
В следующем примере показано, как вызвать эту функцию.
#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;
}
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | evntrace.h |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |