Bagikan melalui


Fungsi EnumerateTraceGuids (evntrace.h)

Fungsi EnumerateTraceGuids mengambil informasi tentang penyedia pelacakan peristiwa yang saat ini berjalan di komputer.

Penting

Fungsi ini telah digantikan oleh EnumerateTraceGuidsEx.

Sintaks

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

Parameter

[in, out] GuidPropertiesArray

Array pointer ke struktur TRACE_GUID_PROPERTIES . Setiap penunjuk dalam array harus menunjuk buffer dengan ruang untuk menyimpan struktur TRACE_GUID_PROPERTIES .

[in] PropertyArrayCount

Jumlah pointer dalam array GuidPropertiesArray .

[out] GuidCount

Menerima jumlah sebenarnya dari penyedia pelacakan peristiwa yang terdaftar di komputer.

Mengembalikan nilai

Jika fungsi berhasil, nilai yang dikembalikan ERROR_SUCCESS.

Jika fungsi gagal, nilai yang dikembalikan adalah salah satu kode kesalahan sistem. Berikut ini adalah beberapa kesalahan umum dan penyebabnya.

  • ERROR_INVALID_PARAMETER

    Salah satu hal berikut ini benar:

    • PropertyArrayCount adalah nol
    • GuidPropertiesArray adalah NULL
  • ERROR_MORE_DATA

    Array properti terlalu kecil untuk menerima informasi untuk semua penyedia terdaftar (GuidCount lebih besar dari PropertyArrayCount). Fungsi ini mengisi GuidPropertiesArray dengan jumlah struktur yang ditentukan dalam PropertyArrayCount.

Keterangan

Fungsi ini mengembalikan informasi tentang penyedia pelacakan peristiwa yang telah dimulai (melalui RegisterTraceGuids, EventRegister) dan belum dihentikan.

Catatan

Untuk mendapatkan informasi tentang manifes penyedia yang telah terdaftar pada sistem (yaitu manifes yang terdaftar melalui wevtutil), gunakan TdhEnumerateProviders.

Anda dapat menggunakan TRACE_GUID_PROPERTIES. Anggota LoggerId untuk menentukan sesi mana yang terakhir mengaktifkan penyedia jika TRACE_GUID_PROPERTIES. IsEnable adalah TRUE.

Daftar tidak akan menyertakan penyedia SystemTraceProvider.

Contoh

Contoh berikut menunjukkan kepada Anda cara memanggil fungsi ini.

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

Persyaratan

   
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header evntrace.h
Pustaka Advapi32.lib
DLL Advapi32.dll

Lihat juga

EnumerateTraceGuidsEx

QueryAllTraces

TRACE_GUID_PROPERTIES