IPerformanceCounterDataCollector
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
クエリ対象のパフォーマンスカウンターと、カウンターデータの書き込み先となるログファイルを指定します。このデータコレクターを作成するには、IDataCollectorCollection::CreateDataCollector メソッドまたは IDataCollectorCollection::CreateDataCollectorFromXml メソッドを呼び出します。
解説(Remarks)
次の例は、このオブジェクトを作成するために CreateDataCollectorFromXml を呼び出す場合に、オブジェクトの初期化に使用できる XML を示しています。IDataCollector::Xml プロパティも、この XML を返します。
<PerformanceCounterDataCollector>
<DataSourceName/>
<Counter/> <!-- カウンターごとにこの要素を指定します -->
<CounterDisplayName/> <!-- 読み取り専用。ユーザーのロケールでの -->
<!-- <PerformanceCounter/> の内容が含まれます -->
<LogFileFormat/>
<SampleInterval/>
<SegmentMaxRecords/>
</PerformanceCounterDataCollector>
この例には、併せて指定する必要がある IDataCollector から継承されたプロパティ要素は示されていない点に注意してください。
コレクターを作成するための XML を指定する際は、設定したいプロパティの要素だけを指定できます。プロパティを指定しない場合、PLA が既定値を提供します。コレクターの XML を取得すると、その XML には IDataCollector のものを含め、すべての要素が含まれます。
メソッド 10
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
ログファイルが SQL ログファイルである場合に、データソース名を取得または設定します。(Get)
| dsn | LPWSTR* | out | 現在のデータソース名(DSN)を受け取るポインタである。 |
解説(Remarks)
データソース名は、IPerformanceCounterDataCollector::LogFileFormat プロパティが plaSql の場合にのみ指定してください。
ログファイルが SQL ログファイルである場合に、データソース名を取得または設定します。(Put)
| dsn | LPWSTR | in | データソース名(DSN)を設定する。 |
解説(Remarks)
データソース名は、IPerformanceCounterDataCollector::LogFileFormat プロパティが plaSql の場合にのみ指定してください。
クエリ対象のパフォーマンスカウンターを取得または設定します。(Get)
| counters | SAFEARRAY** | out | 現在の収集対象のパフォーマンスカウンターの一覧を受け取るポインタである。 |
クエリ対象のパフォーマンスカウンターを取得または設定します。(Put)
| counters | SAFEARRAY* | in | 収集対象のパフォーマンスカウンターの一覧を設定する。 |
ログファイルの形式を取得または設定します。(Get)
| format | FileFormat* | out | 現在のログファイルの形式を受け取るポインタである。 |
ログファイルの形式を取得または設定します。(Put)
| format | FileFormat | in | ログファイルの形式を設定する。 |
カウンターデータをサンプリングする間隔(待機時間)を取得または設定します。(Get)
| interval | DWORD* | out | 現在のサンプリング間隔(秒)を受け取るポインタである。 |
カウンターデータをサンプリングする間隔(待機時間)を取得または設定します。(Put)
| interval | DWORD | in | サンプリング間隔(秒)を設定する。 |
ログに記録するサンプルの最大数を取得または設定します。(Get)
| records | DWORD* | out | 現在の1 セグメントあたりの最大レコード数を受け取るポインタである。 |
解説(Remarks)
サンプルの最大数に達すると、IDataCollectorSet::Segment プロパティが VARIANT_TRUE の場合、PLA は新しいログファイルに切り替えてログ記録を続行します。それ以外の場合、PLA はログ記録を停止します。
ログに記録するサンプルの最大数を取得または設定します。(Put)
| records | DWORD | in | 1 セグメントあたりの最大レコード数を設定する。 |
解説(Remarks)
サンプルの最大数に達すると、IDataCollectorSet::Segment プロパティが VARIANT_TRUE の場合、PLA は新しいログファイルに切り替えてログ記録を続行します。それ以外の場合、PLA はログ記録を停止します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IPerformanceCounterDataCollector "{03837506-098B-11D8-9414-505054503030}" #usecom global IPerformanceCounterDataCollector IID_IPerformanceCounterDataCollector "{}" #comfunc global IPerformanceCounterDataCollector_get_DataSourceName 32 var #comfunc global IPerformanceCounterDataCollector_put_DataSourceName 33 wstr #comfunc global IPerformanceCounterDataCollector_get_PerformanceCounters 34 var #comfunc global IPerformanceCounterDataCollector_put_PerformanceCounters 35 var #comfunc global IPerformanceCounterDataCollector_get_LogFileFormat 36 var #comfunc global IPerformanceCounterDataCollector_put_LogFileFormat 37 int #comfunc global IPerformanceCounterDataCollector_get_SampleInterval 38 var #comfunc global IPerformanceCounterDataCollector_put_SampleInterval 39 int #comfunc global IPerformanceCounterDataCollector_get_SegmentMaxRecords 40 var #comfunc global IPerformanceCounterDataCollector_put_SegmentMaxRecords 41 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IPerformanceCounterDataCollector "{03837506-098B-11D8-9414-505054503030}" #usecom global IPerformanceCounterDataCollector IID_IPerformanceCounterDataCollector "{}" #comfunc global IPerformanceCounterDataCollector_get_DataSourceName 32 sptr #comfunc global IPerformanceCounterDataCollector_put_DataSourceName 33 wstr #comfunc global IPerformanceCounterDataCollector_get_PerformanceCounters 34 sptr #comfunc global IPerformanceCounterDataCollector_put_PerformanceCounters 35 sptr #comfunc global IPerformanceCounterDataCollector_get_LogFileFormat 36 sptr #comfunc global IPerformanceCounterDataCollector_put_LogFileFormat 37 int #comfunc global IPerformanceCounterDataCollector_get_SampleInterval 38 sptr #comfunc global IPerformanceCounterDataCollector_put_SampleInterval 39 int #comfunc global IPerformanceCounterDataCollector_get_SegmentMaxRecords 40 sptr #comfunc global IPerformanceCounterDataCollector_put_SegmentMaxRecords 41 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。