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 です。
関数が失敗した場合、戻り値は システム エラー コードの 1 つです。 一般的なエラーとその原因を次に示します。
ERROR_INVALID_PARAMETER
次のいずれかが当てはまります。
- PropertyArrayCount は 0 です
- 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 |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |