次の方法で共有


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 です
    • GuidPropertiesArrayNULL です
  • ERROR_MORE_DATA

    プロパティ配列が小さすぎて、登録されているすべてのプロバイダーの情報を受け取れなすぎます (GuidCountPropertyArrayCount より大きい)。 この関数は、PropertyArrayCount で指定された構造体の数を GuidPropertiesArray に入力 します

解説

この関数は、( RegisterTraceGuidsEventRegister を介して) 開始され、まだ停止されていないイベント トレース プロバイダーに関する情報を返します。

注意

システムに登録されているプロバイダー マニフェスト (つまり、 を介して wevtutil登録されたマニフェスト) に関する情報を取得するには、 TdhEnumerateProviders を使用します。

TRACE_GUID_PROPERTIESを使用できます。LoggerId メンバーは、TRACE_GUID_PROPERTIES場合にプロバイダーを最後に有効にしたセッションを決定します。IsEnableTRUE です

この一覧には、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

関連項目

EnumerateTraceGuidsEx

QueryAllTraces

TRACE_GUID_PROPERTIES