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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk