Поделиться через


Функция 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

См. также раздел

EnumerateTraceGuidsEx

QueryAllTraces

TRACE_GUID_PROPERTIES