ITraceDataCollector
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
登録されたプロバイダーからトレースイベントを収集します。このインターフェイスはトレースセッションを定義します。
解説(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。
イベントトレースセッション内の各バッファーについて、推奨されるバッファーサイズを取得または設定します。(Get)
| size | DWORD* | out | 現在のバッファのサイズ(KB)を受け取るポインタである。 |
イベントトレースセッション内の各バッファーについて、推奨されるバッファーサイズを取得または設定します。(Put)
| size | DWORD | in | バッファのサイズ(KB)を設定する。 |
ログファイルに書き込まれなかったバッファーの数を取得します。
| buffers | DWORD* | out | 現在の失われたバッファ数を受け取るポインタである。 |
| buffers | DWORD | in | 失われたバッファ数を設定する。 |
ログファイルに書き込まれたバッファーの数を取得します。
| buffers | DWORD* | out | 現在の書き込まれたバッファ数を受け取るポインタである。 |
| buffers | DWORD | in | 書き込まれたバッファ数を設定する。 |
各イベントのタイムスタンプを記録する際に使用するクロック分解能を取得または設定します。(Get)
| clock | ClockType* | out | 現在のクロックの種類を受け取るポインタである。 |
各イベントのタイムスタンプを記録する際に使用するクロック分解能を取得または設定します。(Put)
| clock | ClockType | in | クロックの種類を設定する。 |
バッファーに書き込まれなかったイベントの数を取得します。
| events | DWORD* | out | 現在の失われたイベント数を受け取るポインタである。 |
| events | DWORD | in | 失われたイベント数を設定する。 |
拡張ログファイルモードを取得または設定します。(Get)
| mode | DWORD* | out | 現在の拡張モードフラグを受け取るポインタである。 |
解説(Remarks)
このプロパティを使用して、次のログファイルモードを設定します:
- EVENT_TRACE_PRIVATE_IN_PROC
- EVENT_TRACE_USE_GLOBAL_SEQUENCE
- EVENT_TRACE_USE_LOCAL_SEQUENCE
- EVENT_TRACE_USE_PAGED_MEMORY
拡張ログファイルモードを取得または設定します。(Put)
| mode | DWORD | in | 拡張モードフラグを設定する。 |
解説(Remarks)
このプロパティを使用して、次のログファイルモードを設定します:
- EVENT_TRACE_PRIVATE_IN_PROC
- EVENT_TRACE_USE_GLOBAL_SEQUENCE
- EVENT_TRACE_USE_LOCAL_SEQUENCE
- EVENT_TRACE_USE_PAGED_MEMORY
バッファーをフラッシュするまでの待機時間を取得または設定します。(Get)
| seconds | DWORD* | out | 現在のバッファのフラッシュ間隔(秒)を受け取るポインタである。 |
バッファーをフラッシュするまでの待機時間を取得または設定します。(Put)
| seconds | DWORD | in | バッファのフラッシュ間隔(秒)を設定する。 |
イベントトレースセッションのバッファープール内で、割り当て済みだが未使用のバッファーの数を取得します。
| buffers | DWORD* | out | 現在の空きバッファ数を受け取るポインタである。 |
| buffers | DWORD | in | 空きバッファ数を設定する。 |
セッション GUID を取得または設定します。(Get)
| guid | GUID* | out | 現在のGUIDを受け取るポインタである。 |
セッション GUID を取得または設定します。(Put)
| guid | GUID | in | GUIDを設定する。 |
トレースにカーネルプロバイダーが含まれているかどうかを示す値を取得します。
| kernel | VARIANT_BOOL* | out | 現在のカーネルトレースかどうかを受け取るポインタである。 |
イベントトレースセッションのバッファープールに割り当てるバッファーの最大数を取得または設定します。(Get)
| buffers | DWORD* | out | 現在の最大バッファ数を受け取るポインタである。 |
イベントトレースセッションのバッファープールに割り当てるバッファーの最大数を取得または設定します。(Put)
| buffers | DWORD | in | 最大バッファ数を設定する。 |
イベントトレースセッションのバッファープールに割り当てるバッファーの最小数を取得または設定します。(Get)
| buffers | DWORD* | out | 現在の最小バッファ数を受け取るポインタである。 |
イベントトレースセッションのバッファープールに割り当てるバッファーの最小数を取得または設定します。(Put)
| buffers | DWORD | in | 最小バッファ数を設定する。 |
ロギングに使用する推奨バッファー数を取得または設定します。(Get)
| buffers | DWORD* | out | 現在のバッファ数を受け取るポインタである。 |
ロギングに使用する推奨バッファー数を取得または設定します。(Put)
| buffers | DWORD | in | バッファ数を設定する。 |
ロギングの前に PLA がログファイル全体のサイズを割り当てるべきかどうかを示す値を取得または設定します。(Get)
| allocate | VARIANT_BOOL* | out | 現在のファイルを事前割り当てするかどうかを受け取るポインタである。 |
ロギングの前に PLA がログファイル全体のサイズを割り当てるべきかどうかを示す値を取得または設定します。(Put)
| allocate | VARIANT_BOOL | in | ファイルを事前割り当てするかどうかを設定する。 |
セッションがプライベートなインプロセスセッションであるかどうかを示す値を取得または設定します。(Get)
| process | VARIANT_BOOL* | out | 現在のプロセスモードを使用するかどうかを受け取るポインタである。 |
解説(Remarks)
プライベートイベントトレースセッションは、そのイベントトレースプロバイダーと同じプロセスで実行されるユーザーモードのイベントトレースセッションです。つまり、プライベートセッションが有効にする登録済みのプロバイダーと、そのプライベートセッションは、すべて同じプロセス内になければなりません。
セッションがプライベートなインプロセスセッションであるかどうかを示す値を取得または設定します。(Put)
| process | VARIANT_BOOL | in | プロセスモードを使用するかどうかを設定する。 |
解説(Remarks)
プライベートイベントトレースセッションは、そのイベントトレースプロバイダーと同じプロセスで実行されるユーザーモードのイベントトレースセッションです。つまり、プライベートセッションが有効にする登録済みのプロバイダーと、そのプライベートセッションは、すべて同じプロセス内になければなりません。
コンシューマーにリアルタイムで配信されなかったバッファーの数を取得します。
| buffers | DWORD* | out | 現在のリアルタイム配信で失われたバッファ数を受け取るポインタである。 |
| buffers | DWORD | in | リアルタイム配信で失われたバッファ数を設定する。 |
セッション識別子を取得します。
| id | ULONGLONG* | out | 現在のトレースセッション IDを受け取るポインタである。 |
| id | ULONGLONG | in | トレースセッション IDを設定する。 |
セッションの名前を取得または設定します。(Get)
| name | LPWSTR* | out | 現在のトレースセッション名を受け取るポインタである。 |
セッションの名前を取得または設定します。(Put)
| name | LPWSTR | in | トレースセッション名を設定する。 |
スレッドが実行中の場合、ログセッションの現在のスレッドを取得します。
| tid | DWORD* | out | 現在のセッションのスレッド IDを受け取るポインタである。 |
| tid | DWORD | in | セッションのスレッド IDを設定する。 |
トレースセッションのロギングモードを取得または設定します。(Get)
| mode | StreamMode* | out | 現在のストリームモードを受け取るポインタである。 |
トレースセッションのロギングモードを取得または設定します。(Put)
| mode | StreamMode | in | ストリームモードを設定する。 |
このトレースセッションで有効なプロバイダーのリストを取得します。
| providers | ITraceDataProviderCollection** | out | 現在のトレースデータプロバイダーのコレクションを受け取るポインタである。 |
解説(Remarks)
コレクションにカーネルプロバイダーが含まれている場合、コレクション内のすべてのプロバイダーがカーネルプロバイダーである必要があります。
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 不要)。#define global IID_ITraceDataCollector "{0383750B-098B-11D8-9414-505054503030}" #usecom global ITraceDataCollector IID_ITraceDataCollector "{}" #comfunc global ITraceDataCollector_get_BufferSize 32 sptr #comfunc global ITraceDataCollector_put_BufferSize 33 int #comfunc global ITraceDataCollector_get_BuffersLost 34 sptr #comfunc global ITraceDataCollector_put_BuffersLost 35 int #comfunc global ITraceDataCollector_get_BuffersWritten 36 sptr #comfunc global ITraceDataCollector_put_BuffersWritten 37 int #comfunc global ITraceDataCollector_get_ClockType 38 sptr #comfunc global ITraceDataCollector_put_ClockType 39 int #comfunc global ITraceDataCollector_get_EventsLost 40 sptr #comfunc global ITraceDataCollector_put_EventsLost 41 int #comfunc global ITraceDataCollector_get_ExtendedModes 42 sptr #comfunc global ITraceDataCollector_put_ExtendedModes 43 int #comfunc global ITraceDataCollector_get_FlushTimer 44 sptr #comfunc global ITraceDataCollector_put_FlushTimer 45 int #comfunc global ITraceDataCollector_get_FreeBuffers 46 sptr #comfunc global ITraceDataCollector_put_FreeBuffers 47 int #comfunc global ITraceDataCollector_get_Guid 48 sptr #comfunc global ITraceDataCollector_put_Guid 49 int #comfunc global ITraceDataCollector_get_IsKernelTrace 50 sptr #comfunc global ITraceDataCollector_get_MaximumBuffers 51 sptr #comfunc global ITraceDataCollector_put_MaximumBuffers 52 int #comfunc global ITraceDataCollector_get_MinimumBuffers 53 sptr #comfunc global ITraceDataCollector_put_MinimumBuffers 54 int #comfunc global ITraceDataCollector_get_NumberOfBuffers 55 sptr #comfunc global ITraceDataCollector_put_NumberOfBuffers 56 int #comfunc global ITraceDataCollector_get_PreallocateFile 57 sptr #comfunc global ITraceDataCollector_put_PreallocateFile 58 int #comfunc global ITraceDataCollector_get_ProcessMode 59 sptr #comfunc global ITraceDataCollector_put_ProcessMode 60 int #comfunc global ITraceDataCollector_get_RealTimeBuffersLost 61 sptr #comfunc global ITraceDataCollector_put_RealTimeBuffersLost 62 int #comfunc global ITraceDataCollector_get_SessionId 63 sptr #comfunc global ITraceDataCollector_put_SessionId 64 int64 #comfunc global ITraceDataCollector_get_SessionName 65 sptr #comfunc global ITraceDataCollector_put_SessionName 66 wstr #comfunc global ITraceDataCollector_get_SessionThreadId 67 sptr #comfunc global ITraceDataCollector_put_SessionThreadId 68 int #comfunc global ITraceDataCollector_get_StreamMode 69 sptr #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が無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。