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) 。 函式會以PropertyArrayCount中指定的結構數目填滿GuidPropertiesArray。
備註
此函式會傳回已透過 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 |
標頭 | evntrace.h |
程式庫 | Advapi32.lib |
Dll | Advapi32.dll |