Win32 API 日本語リファレンス
ホームSystem.Performance › ITraceDataCollector

ITraceDataCollector

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID0383750b-098b-11d8-9414-505054503030継承元IDataCollector呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl32

公式ドキュメント

登録されたプロバイダーからトレースイベントを収集します。このインターフェイスはトレースセッションを定義します。

解説(Remarks)

以下の例は、このオブジェクトを作成するために IDataCollectorCollection::CreateDataCollectorFromXml メソッドを呼び出す場合に、このオブジェクトの初期化に使用できる XML を示しています。The IDataCollector::Xml プロパティもこの XML を返します。

<TraceDataCollector>
    <BufferSize/>
    <BuffersLost/>  <!-- Output only -->
    <BuffersWritten/>  <!-- Output only -->
    <ClockType/>
    <EventsLost/>  <!-- Output only -->
    <ExtendedMode/>
    <FlushTimer/>
    <FreeBuffers/>  <!-- Output only -->
    <Guid/>
    <IsKernelTrace/>
    <MaximumBuffers/>
    <MinimumBuffers/>
    <NumberOfBuffers/>
    <PreallocateFile/>
    <ProcessMode/>
    <RealTimeBuffersLost/>  <!-- Output only -->
    <SessionId/>  <!-- Output only -->
    <SessionName/>
    <SessionThreadId/>  <!-- Output only -->
    <StreamMode/>
    <TraceDataProvider>  <!-- Specify for each provider -->
        <DisplayName/>
        <FilterData/>
        <FilterType/>
        <Guid/>
        <KeywordsAll>
            <Description/>
            <ValueMapType/>
            <Value/>
        </KeywordsAll>
        <KeywordsAny>
            <Description/>
            <ValueMapType/>
            <Value/>
        <KeywordsAny/>
        <Level>
            <Description/>
            <ValueMapType/>
            <Value/>
        <Level/>
        <Properties/>
    </TraceDataProvider>
</TraceDataCollector>

なお、この例には、同様に指定する必要がある IDataCollector から継承されるプロパティ要素は示されていません。

コレクターを作成する XML を指定する際は、設定したいプロパティの要素のみを指定できます。プロパティを指定しない場合、PLA が既定値を提供します。コレクターの XML を取得すると、その XML には IDataCollector のものを含むすべての要素が含まれます。

メソッド 40

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 32 HRESULT get_BufferSize(DWORD* size)

イベントトレースセッション内の各バッファーについて、推奨されるバッファーサイズを取得または設定します。(Get)

sizeDWORD*out現在のバッファのサイズ(KB)を受け取るポインタである。
vtbl 33 HRESULT put_BufferSize(DWORD size)

イベントトレースセッション内の各バッファーについて、推奨されるバッファーサイズを取得または設定します。(Put)

sizeDWORDinバッファのサイズ(KB)を設定する。
vtbl 34 HRESULT get_BuffersLost(DWORD* buffers)

ログファイルに書き込まれなかったバッファーの数を取得します。

buffersDWORD*out現在の失われたバッファ数を受け取るポインタである。
vtbl 35 HRESULT put_BuffersLost(DWORD buffers)
buffersDWORDin失われたバッファ数を設定する。
vtbl 36 HRESULT get_BuffersWritten(DWORD* buffers)

ログファイルに書き込まれたバッファーの数を取得します。

buffersDWORD*out現在の書き込まれたバッファ数を受け取るポインタである。
vtbl 37 HRESULT put_BuffersWritten(DWORD buffers)
buffersDWORDin書き込まれたバッファ数を設定する。
vtbl 38 HRESULT get_ClockType(ClockType* clock)

各イベントのタイムスタンプを記録する際に使用するクロック分解能を取得または設定します。(Get)

clockClockType*out現在のクロックの種類を受け取るポインタである。
vtbl 39 HRESULT put_ClockType(ClockType clock)

各イベントのタイムスタンプを記録する際に使用するクロック分解能を取得または設定します。(Put)

clockClockTypeinクロックの種類を設定する。
vtbl 40 HRESULT get_EventsLost(DWORD* events)

バッファーに書き込まれなかったイベントの数を取得します。

eventsDWORD*out現在の失われたイベント数を受け取るポインタである。
vtbl 41 HRESULT put_EventsLost(DWORD events)
eventsDWORDin失われたイベント数を設定する。
vtbl 42 HRESULT get_ExtendedModes(DWORD* mode)

拡張ログファイルモードを取得または設定します。(Get)

modeDWORD*out現在の拡張モードフラグを受け取るポインタである。

解説(Remarks)

このプロパティを使用して、次のログファイルモードを設定します:

すべてのログファイルモードとその値の説明については、Logging Mode Constants を参照してください。その他の利用可能なログファイルモードを設定するには、次の表に示すように、対応する PLA プロパティを設定します。
ログファイルモード 対応する PLA プロパティ
EVENT_TRACE_BUFFERING_MODE ITraceDataProvider::StreamModeplaBuffering に設定されている。
EVENT_TRACE_FILE_MODE_APPEND IDataCollector::LogAppend
EVENT_TRACE_FILE_MODE_CIRCULAR IDataCollector::LogCircular
EVENT_TRACE_FILE_MODE_NEWFILE IDataCollectorSet::SegmentIDataCollectorSet::SegmentMaxSize
EVENT_TRACE_FILE_MODE_PREALLOCATE ITraceDataCollector::PreallocateFileIDataCollectorSet::SegmentMaxSize
EVENT_TRACE_FILE_MODE_SEQUENTIAL IDataCollector::LogAppendIDataCollector::LogCircular が false である。
EVENT_TRACE_PRIVATE_LOGGER_MODE ITraceDataProvider::ProcessMode
EVENT_TRACE_REAL_TIME_MODE ITraceDataProvider::StreamModeplaRealTime に設定されている。
vtbl 43 HRESULT put_ExtendedModes(DWORD mode)

拡張ログファイルモードを取得または設定します。(Put)

modeDWORDin拡張モードフラグを設定する。

解説(Remarks)

このプロパティを使用して、次のログファイルモードを設定します:

すべてのログファイルモードとその値の説明については、Logging Mode Constants を参照してください。その他の利用可能なログファイルモードを設定するには、次の表に示すように、対応する PLA プロパティを設定します。
ログファイルモード 対応する PLA プロパティ
EVENT_TRACE_BUFFERING_MODE ITraceDataProvider::StreamModeplaBuffering に設定されている。
EVENT_TRACE_FILE_MODE_APPEND IDataCollector::LogAppend
EVENT_TRACE_FILE_MODE_CIRCULAR IDataCollector::LogCircular
EVENT_TRACE_FILE_MODE_NEWFILE IDataCollectorSet::SegmentIDataCollectorSet::SegmentMaxSize
EVENT_TRACE_FILE_MODE_PREALLOCATE ITraceDataCollector::PreallocateFileIDataCollectorSet::SegmentMaxSize
EVENT_TRACE_FILE_MODE_SEQUENTIAL IDataCollector::LogAppendIDataCollector::LogCircular が false である。
EVENT_TRACE_PRIVATE_LOGGER_MODE ITraceDataProvider::ProcessMode
EVENT_TRACE_REAL_TIME_MODE ITraceDataProvider::StreamModeplaRealTime に設定されている。
vtbl 44 HRESULT get_FlushTimer(DWORD* seconds)

バッファーをフラッシュするまでの待機時間を取得または設定します。(Get)

secondsDWORD*out現在のバッファのフラッシュ間隔(秒)を受け取るポインタである。
vtbl 45 HRESULT put_FlushTimer(DWORD seconds)

バッファーをフラッシュするまでの待機時間を取得または設定します。(Put)

secondsDWORDinバッファのフラッシュ間隔(秒)を設定する。
vtbl 46 HRESULT get_FreeBuffers(DWORD* buffers)

イベントトレースセッションのバッファープール内で、割り当て済みだが未使用のバッファーの数を取得します。

buffersDWORD*out現在の空きバッファ数を受け取るポインタである。
vtbl 47 HRESULT put_FreeBuffers(DWORD buffers)
buffersDWORDin空きバッファ数を設定する。
vtbl 48 HRESULT get_Guid(GUID* guid)

セッション GUID を取得または設定します。(Get)

guidGUID*out現在のGUIDを受け取るポインタである。
vtbl 49 HRESULT put_Guid(GUID guid)

セッション GUID を取得または設定します。(Put)

guidGUIDinGUIDを設定する。
vtbl 50 HRESULT get_IsKernelTrace(VARIANT_BOOL* kernel)

トレースにカーネルプロバイダーが含まれているかどうかを示す値を取得します。

kernelVARIANT_BOOL*out現在のカーネルトレースかどうかを受け取るポインタである。
vtbl 51 HRESULT get_MaximumBuffers(DWORD* buffers)

イベントトレースセッションのバッファープールに割り当てるバッファーの最大数を取得または設定します。(Get)

buffersDWORD*out現在の最大バッファ数を受け取るポインタである。
vtbl 52 HRESULT put_MaximumBuffers(DWORD buffers)

イベントトレースセッションのバッファープールに割り当てるバッファーの最大数を取得または設定します。(Put)

buffersDWORDin最大バッファ数を設定する。
vtbl 53 HRESULT get_MinimumBuffers(DWORD* buffers)

イベントトレースセッションのバッファープールに割り当てるバッファーの最小数を取得または設定します。(Get)

buffersDWORD*out現在の最小バッファ数を受け取るポインタである。
vtbl 54 HRESULT put_MinimumBuffers(DWORD buffers)

イベントトレースセッションのバッファープールに割り当てるバッファーの最小数を取得または設定します。(Put)

buffersDWORDin最小バッファ数を設定する。
vtbl 55 HRESULT get_NumberOfBuffers(DWORD* buffers)

ロギングに使用する推奨バッファー数を取得または設定します。(Get)

buffersDWORD*out現在のバッファ数を受け取るポインタである。
vtbl 56 HRESULT put_NumberOfBuffers(DWORD buffers)

ロギングに使用する推奨バッファー数を取得または設定します。(Put)

buffersDWORDinバッファ数を設定する。
vtbl 57 HRESULT get_PreallocateFile(VARIANT_BOOL* allocate)

ロギングの前に PLA がログファイル全体のサイズを割り当てるべきかどうかを示す値を取得または設定します。(Get)

allocateVARIANT_BOOL*out現在のファイルを事前割り当てするかどうかを受け取るポインタである。
vtbl 58 HRESULT put_PreallocateFile(VARIANT_BOOL allocate)

ロギングの前に PLA がログファイル全体のサイズを割り当てるべきかどうかを示す値を取得または設定します。(Put)

allocateVARIANT_BOOLinファイルを事前割り当てするかどうかを設定する。
vtbl 59 HRESULT get_ProcessMode(VARIANT_BOOL* process)

セッションがプライベートなインプロセスセッションであるかどうかを示す値を取得または設定します。(Get)

processVARIANT_BOOL*out現在のプロセスモードを使用するかどうかを受け取るポインタである。

解説(Remarks)

プライベートイベントトレースセッションは、そのイベントトレースプロバイダーと同じプロセスで実行されるユーザーモードのイベントトレースセッションです。つまり、プライベートセッションが有効にする登録済みのプロバイダーと、そのプライベートセッションは、すべて同じプロセス内になければなりません。

vtbl 60 HRESULT put_ProcessMode(VARIANT_BOOL process)

セッションがプライベートなインプロセスセッションであるかどうかを示す値を取得または設定します。(Put)

processVARIANT_BOOLinプロセスモードを使用するかどうかを設定する。

解説(Remarks)

プライベートイベントトレースセッションは、そのイベントトレースプロバイダーと同じプロセスで実行されるユーザーモードのイベントトレースセッションです。つまり、プライベートセッションが有効にする登録済みのプロバイダーと、そのプライベートセッションは、すべて同じプロセス内になければなりません。

vtbl 61 HRESULT get_RealTimeBuffersLost(DWORD* buffers)

コンシューマーにリアルタイムで配信されなかったバッファーの数を取得します。

buffersDWORD*out現在のリアルタイム配信で失われたバッファ数を受け取るポインタである。
vtbl 62 HRESULT put_RealTimeBuffersLost(DWORD buffers)
buffersDWORDinリアルタイム配信で失われたバッファ数を設定する。
vtbl 63 HRESULT get_SessionId(ULONGLONG* id)

セッション識別子を取得します。

idULONGLONG*out現在のトレースセッション IDを受け取るポインタである。
vtbl 64 HRESULT put_SessionId(ULONGLONG id)
idULONGLONGinトレースセッション IDを設定する。
vtbl 65 HRESULT get_SessionName(LPWSTR* name)

セッションの名前を取得または設定します。(Get)

nameLPWSTR*out現在のトレースセッション名を受け取るポインタである。
vtbl 66 HRESULT put_SessionName(LPWSTR name)

セッションの名前を取得または設定します。(Put)

nameLPWSTRinトレースセッション名を設定する。
vtbl 67 HRESULT get_SessionThreadId(DWORD* tid)

スレッドが実行中の場合、ログセッションの現在のスレッドを取得します。

tidDWORD*out現在のセッションのスレッド IDを受け取るポインタである。
vtbl 68 HRESULT put_SessionThreadId(DWORD tid)
tidDWORDinセッションのスレッド IDを設定する。
vtbl 69 HRESULT get_StreamMode(StreamMode* mode)

トレースセッションのロギングモードを取得または設定します。(Get)

modeStreamMode*out現在のストリームモードを受け取るポインタである。
vtbl 70 HRESULT put_StreamMode(StreamMode mode)

トレースセッションのロギングモードを取得または設定します。(Put)

modeStreamModeinストリームモードを設定する。
vtbl 71 HRESULT get_TraceDataProviders(ITraceDataProviderCollection** providers)

このトレースセッションで有効なプロバイダーのリストを取得します。

providersITraceDataProviderCollection**out現在のトレースデータプロバイダーのコレクションを受け取るポインタである。

解説(Remarks)

コレクションにカーネルプロバイダーが含まれている場合、コレクション内のすべてのプロバイダーがカーネルプロバイダーである必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ITraceDataCollector "{0383750B-098B-11D8-9414-505054503030}"
#usecom global ITraceDataCollector IID_ITraceDataCollector "{}"
#comfunc global ITraceDataCollector_get_BufferSize           32 var
#comfunc global ITraceDataCollector_put_BufferSize           33 int
#comfunc global ITraceDataCollector_get_BuffersLost          34 var
#comfunc global ITraceDataCollector_put_BuffersLost          35 int
#comfunc global ITraceDataCollector_get_BuffersWritten       36 var
#comfunc global ITraceDataCollector_put_BuffersWritten       37 int
#comfunc global ITraceDataCollector_get_ClockType            38 var
#comfunc global ITraceDataCollector_put_ClockType            39 int
#comfunc global ITraceDataCollector_get_EventsLost           40 var
#comfunc global ITraceDataCollector_put_EventsLost           41 int
#comfunc global ITraceDataCollector_get_ExtendedModes        42 var
#comfunc global ITraceDataCollector_put_ExtendedModes        43 int
#comfunc global ITraceDataCollector_get_FlushTimer           44 var
#comfunc global ITraceDataCollector_put_FlushTimer           45 int
#comfunc global ITraceDataCollector_get_FreeBuffers          46 var
#comfunc global ITraceDataCollector_put_FreeBuffers          47 int
#comfunc global ITraceDataCollector_get_Guid                 48 var
#comfunc global ITraceDataCollector_put_Guid                 49 int
#comfunc global ITraceDataCollector_get_IsKernelTrace        50 var
#comfunc global ITraceDataCollector_get_MaximumBuffers       51 var
#comfunc global ITraceDataCollector_put_MaximumBuffers       52 int
#comfunc global ITraceDataCollector_get_MinimumBuffers       53 var
#comfunc global ITraceDataCollector_put_MinimumBuffers       54 int
#comfunc global ITraceDataCollector_get_NumberOfBuffers      55 var
#comfunc global ITraceDataCollector_put_NumberOfBuffers      56 int
#comfunc global ITraceDataCollector_get_PreallocateFile      57 var
#comfunc global ITraceDataCollector_put_PreallocateFile      58 int
#comfunc global ITraceDataCollector_get_ProcessMode          59 var
#comfunc global ITraceDataCollector_put_ProcessMode          60 int
#comfunc global ITraceDataCollector_get_RealTimeBuffersLost  61 var
#comfunc global ITraceDataCollector_put_RealTimeBuffersLost  62 int
#comfunc global ITraceDataCollector_get_SessionId            63 var
#comfunc global ITraceDataCollector_put_SessionId            64 int64
#comfunc global ITraceDataCollector_get_SessionName          65 var
#comfunc global ITraceDataCollector_put_SessionName          66 wstr
#comfunc global ITraceDataCollector_get_SessionThreadId      67 var
#comfunc global ITraceDataCollector_put_SessionThreadId      68 int
#comfunc global ITraceDataCollector_get_StreamMode           69 var
#comfunc global ITraceDataCollector_put_StreamMode           70 int
#comfunc global ITraceDataCollector_get_TraceDataProviders   71 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。