IDataCollector
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
XML を使用してコレクターのプロパティを設定および取得し、ログファイル名を指定し、ログファイルの場所を取得します。このインターフェイスは抽象クラスであり、次のデータコレクターの派生元です:IAlertDataCollectorIApiTracingDataCollectorIConfigurationDataCollectorIPerformanceCounterDataCollectorITraceDataCollector
解説(Remarks)
派生データコレクターのいずれかを作成するために IDataCollectorCollection::CreateDataCollectorFromXml プロパティを呼び出す場合、次の例に示す XML を使用してこのオブジェクトを初期化できます。IDataCollector::Xml プロパティもこの XML を返します。
<FileName/>
<FileNameFormat/>
<FileNameFormatPattern/>
<Index/>
<LatestOutputLocation/>
<LogAppend/>
<LogCircular/>
<LogOverwrite/>
<Name/>
<OutputLocation/>
この例では派生データコレクターのプロパティ要素を示していないことに注意してください(各データコレクターの XML 要素については、それぞれのデータコレクターを参照してください)。これらの要素は、必要に応じてデータコレクターの XML に含めてください。次の例は、アラートデータコレクターの XML を示しています。要素は任意の順序で指定できます。
<AlertDataCollector>
<FileName/>
<FileNameFormat/>
<FileNameFormatPattern/>
<Index/>
<LatestOutputLocation/>
<LogAppend/>
<LogCircular/>
<LogOverwrite/>
<Name/>
<OutputLocation/>
<Alert/> <!-- 各アラートに対して <Alert> 要素を指定します -->
<EventLog/>
<SampleInterval/>
<Task/>
<TaskArguments/>
<TaskUserTextArguments/>
<TaskSetWorkingDirectory/>
<TriggerDataCollectorSet/>
</AlertDataCollector>
コレクターを作成する XML を指定するとき、設定したいプロパティの要素だけを指定できます。プロパティを指定しない場合、PLA は既定値を提供します。コレクターの XML を取得すると、その XML には IDataCollector のものを含むすべての要素が含まれます。
メソッド 25
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
このデータコレクターが属するデータコレクターセットを取得します。
| group | IDataCollectorSet** | out | 現在の所属するデータコレクターセットを受け取るポインタである。 |
| group | IDataCollectorSet* | inoptional | 所属するデータコレクターセットを設定する。 |
このデータコレクターの種類(例:パフォーマンスデータコレクター)を取得します。
| type | DataCollectorType* | out | 現在のデータコレクターの種類を受け取るポインタである。 |
解説(Remarks)
PLA は、データコレクターを作成するときに種類を設定します。
データコレクターのデータを格納するファイルのベース名を取得または設定します。(Get)
| name | LPWSTR* | out | 現在のファイル名を受け取るポインタである。 |
解説(Remarks)
IDataCollector::FileNameFormat プロパティで書式設定オプションを指定した場合、実際に使用されるファイル名は異なることがあります。実際に使用されたファイル名は IDataCollector::LatestOutputLocation プロパティに格納されます。
ファイル名にパスを含めないでください。ファイルへのパスは IDataCollectorSet::RootPath プロパティと IDataCollectorSet::Subdirectory プロパティによって決まります。
指定するファイル名拡張子は、データコレクターの種類によって異なります。次の表は、各データコレクターで使用する正しい拡張子を示しています。別の拡張子を指定した場合、PLA はそれを使用します。拡張子を指定しない場合、PLA はファイルに正しい拡張子を追加します。
| データコレクターの種類 | 使用する拡張子 |
|---|---|
| 構成データコレクター | .xml |
| パフォーマンスデータコレクター | IPerformanceCounterDataCollector::LogFileFormat プロパティの値に応じて、.blg、.csv、または .tsv になります。 |
| トレースデータコレクター | .etl |
ファイルが既に存在する場合に実行される処理は、IDataCollector::LogAppend プロパティと IDataCollector::LogOverwrite プロパティによって決まります。
データコレクターのデータを格納するファイルのベース名を取得または設定します。(Put)
| name | LPWSTR | in | ファイル名を設定する。 |
解説(Remarks)
IDataCollector::FileNameFormat プロパティで書式設定オプションを指定した場合、実際に使用されるファイル名は異なることがあります。実際に使用されたファイル名は IDataCollector::LatestOutputLocation プロパティに格納されます。
ファイル名にパスを含めないでください。ファイルへのパスは IDataCollectorSet::RootPath プロパティと IDataCollectorSet::Subdirectory プロパティによって決まります。
指定するファイル名拡張子は、データコレクターの種類によって異なります。次の表は、各データコレクターで使用する正しい拡張子を示しています。別の拡張子を指定した場合、PLA はそれを使用します。拡張子を指定しない場合、PLA はファイルに正しい拡張子を追加します。
| データコレクターの種類 | 使用する拡張子 |
|---|---|
| 構成データコレクター | .xml |
| パフォーマンスデータコレクター | IPerformanceCounterDataCollector::LogFileFormat プロパティの値に応じて、.blg、.csv、または .tsv になります。 |
| トレースデータコレクター | .etl |
ファイルが既に存在する場合に実行される処理は、IDataCollector::LogAppend プロパティと IDataCollector::LogOverwrite プロパティによって決まります。
ファイル名を装飾する方法を記述するフラグを取得または設定します。(Get)
| format | AutoPathFormat* | out | 現在のファイル名の自動生成形式を受け取るポインタである。 |
解説(Remarks)
PLA はファイル名に装飾を追加します。たとえば plaMonthDayHour を指定すると、PLA は現在の月、日、時の値をファイル名に追加します。ファイル名が MyFile の場合、結果は MyFile110816 のようになります。
ファイル名を装飾する方法を記述するフラグを取得または設定します。(Put)
| format | AutoPathFormat | in | ファイル名の自動生成形式を設定する。 |
解説(Remarks)
PLA はファイル名に装飾を追加します。たとえば plaMonthDayHour を指定すると、PLA は現在の月、日、時の値をファイル名に追加します。ファイル名が MyFile の場合、結果は MyFile110816 のようになります。
ファイル名を装飾するときに使用する書式パターンを取得または設定します。(Get)
| pattern | LPWSTR* | out | 現在のファイル名の生成パターンを受け取るポインタである。 |
解説(Remarks)
PLA は、IDataCollector::FileNameFormat プロパティが plaPattern に設定されている場合にのみ、このパターンを使用します。
PLA はファイル名に装飾を追加します。次のパターン文字を使用して独自のパターンを定義します。たとえば、パターン "MMMM d, yyyy \a\t h:mmTt" は "January 31, 2005 at 4:20AM" を生成することがあります。ファイル名が MyFile の場合、装飾されたファイル名は "MyFile January 31, 2005 at 4:20AM" になります。
| パターン | 説明 |
|---|---|
| D | 年間通算日。 |
| DDD | 年間通算日(必要に応じて先頭にゼロを付加)。 |
| d | その月の日。 |
| dd | その月の日(必要に応じて先頭にゼロを付加)。 |
| ddd | 曜日の省略名(例:Tuesday の場合は Tue)。 |
| dddd | 曜日の完全名。 |
| M | 月。 |
| MM | 月(必要に応じて先頭にゼロを付加)。 |
| MMM | 月の省略名(例:January の場合は Jan)。 |
| MMMM | 月の完全名。 |
| y | 世紀を除いた年(下2桁)。 |
| yy | 世紀を除いた年(必要に応じて先頭にゼロを付加)。 |
| yyyy | 世紀を含む年。 |
| h | 12時間制の時。 |
| hh | 12時間制の時(必要に応じて先頭にゼロを付加)。 |
| H | 24時間制の時。 |
| HH | 24時間制の時(必要に応じて先頭にゼロを付加)。 |
| m | 分。 |
| mm | 分(必要に応じて先頭にゼロを付加)。 |
| S | 秒。 |
| Ss | 秒(必要に応じて先頭にゼロを付加)。 |
| T | A.M./P.M. 指定子の最初の文字。 |
| Tt | A.M./P.M. 指定子。 |
| Z | タイムゾーンのオフセット。 |
| Zz | タイムゾーンのオフセット(必要に応じて先頭にゼロを付加)。 |
| N | 連番。先頭のゼロの数は文字数によって定義されます。たとえば、連番が 32 でパターンが NNN の場合、使用される連番は 032 になります。 |
| \c | エスケープ文字。c は任意の文字です。エスケープされていない認識されない文字(空白を除く)はエラーになります。 |
ファイル名を装飾するときに使用する書式パターンを取得または設定します。(Put)
| pattern | LPWSTR | in | ファイル名の生成パターンを設定する。 |
解説(Remarks)
PLA は、IDataCollector::FileNameFormat プロパティが plaPattern に設定されている場合にのみ、このパターンを使用します。
PLA はファイル名に装飾を追加します。次のパターン文字を使用して独自のパターンを定義します。たとえば、パターン "MMMM d, yyyy \a\t h:mmTt" は "January 31, 2005 at 4:20AM" を生成することがあります。ファイル名が MyFile の場合、装飾されたファイル名は "MyFile January 31, 2005 at 4:20AM" になります。
| パターン | 説明 |
|---|---|
| D | 年間通算日。 |
| DDD | 年間通算日(必要に応じて先頭にゼロを付加)。 |
| d | その月の日。 |
| dd | その月の日(必要に応じて先頭にゼロを付加)。 |
| ddd | 曜日の省略名(例:Tuesday の場合は Tue)。 |
| dddd | 曜日の完全名。 |
| M | 月。 |
| MM | 月(必要に応じて先頭にゼロを付加)。 |
| MMM | 月の省略名(例:January の場合は Jan)。 |
| MMMM | 月の完全名。 |
| y | 世紀を除いた年(下2桁)。 |
| yy | 世紀を除いた年(必要に応じて先頭にゼロを付加)。 |
| yyyy | 世紀を含む年。 |
| h | 12時間制の時。 |
| hh | 12時間制の時(必要に応じて先頭にゼロを付加)。 |
| H | 24時間制の時。 |
| HH | 24時間制の時(必要に応じて先頭にゼロを付加)。 |
| m | 分。 |
| mm | 分(必要に応じて先頭にゼロを付加)。 |
| S | 秒。 |
| Ss | 秒(必要に応じて先頭にゼロを付加)。 |
| T | A.M./P.M. 指定子の最初の文字。 |
| Tt | A.M./P.M. 指定子。 |
| Z | タイムゾーンのオフセット。 |
| Zz | タイムゾーンのオフセット(必要に応じて先頭にゼロを付加)。 |
| N | 連番。先頭のゼロの数は文字数によって定義されます。たとえば、連番が 32 でパターンが NNN の場合、使用される連番は 032 になります。 |
| \c | エスケープ文字。c は任意の文字です。エスケープされていない認識されない文字(空白を除く)はエラーになります。 |
PLA が前回ファイルを作成したときに使用した、完全に装飾されたファイル名を取得または設定します。(IDataCollector.get_LatestOutputLocation)
| path | LPWSTR* | out | 現在の最新の出力先パスを受け取るポインタである。 |
解説(Remarks)
通常、このプロパティは設定しません。データコレクターが開始すると、PLA は IDataCollector::OutputLocation プロパティの値を使用してこのプロパティを設定します。
ファイルが削除された場合は、このプロパティを空に設定できます。
トレースデータコレクターの場合に限り、このプロパティに使用するファイルの名前を設定できます。設定しない場合、PLA は他のデータコレクターと同様にファイルを作成します。
PLA が前回ファイルを作成したときに使用した、完全に装飾されたファイル名を取得または設定します。(IDataCollector.put_LatestOutputLocation)
| path | LPWSTR | in | 最新の出力先パスを設定する。 |
解説(Remarks)
通常、このプロパティは設定しません。データコレクターが開始すると、PLA は IDataCollector::OutputLocation プロパティの値を使用してこのプロパティを設定します。
ファイルが削除された場合は、このプロパティを空に設定できます。
トレースデータコレクターの場合に限り、このプロパティに使用するファイルの名前を設定できます。設定しない場合、PLA は他のデータコレクターと同様にファイルを作成します。
収集したデータを現在のファイルに追加するかどうかを示す値を取得または設定します。(Get)
| append | VARIANT_BOOL* | out | 現在の既存ログに追記するかどうかを受け取るポインタである。 |
解説(Remarks)
このプロパティが IDataCollector::LogCircular プロパティまたは IDataCollector::LogOverwrite プロパティと競合する場合、検証エラーが発生します。
収集したデータを現在のファイルに追加するかどうかを示す値を取得または設定します。(Put)
| append | VARIANT_BOOL | in | 既存ログに追記するかどうかを設定する。 |
解説(Remarks)
このプロパティが IDataCollector::LogCircular プロパティまたは IDataCollector::LogOverwrite プロパティと競合する場合、検証エラーが発生します。
循環ファイルを作成するかどうかを示す値を取得または設定します。(Get)
| circular | VARIANT_BOOL* | out | 現在の循環ログ形式を使用するかどうかを受け取るポインタである。 |
循環ファイルを作成するかどうかを示す値を取得または設定します。(Put)
| circular | VARIANT_BOOL | in | 循環ログ形式を使用するかどうかを設定する。 |
現在のファイルを上書きするかどうかを示す値を取得または設定します。(Get)
| overwrite | VARIANT_BOOL* | out | 現在の既存ログを上書きするかどうかを受け取るポインタである。 |
現在のファイルを上書きするかどうかを示す値を取得または設定します。(Put)
| overwrite | VARIANT_BOOL | in | 既存ログを上書きするかどうかを設定する。 |
データコレクターの名前を取得または設定します。(Get)
| name | LPWSTR* | out | 現在の名前を受け取るポインタである。 |
データコレクターの名前を取得または設定します。(Put)
| name | LPWSTR | in | 名前を設定する。 |
PLA が今ファイルを作成するとした場合の、装飾されたファイル名を取得します。
| path | LPWSTR* | out | 現在の出力先パスを受け取るポインタである。 |
解説(Remarks)
IDataCollector::LatestOutputLocation プロパティには、コレクターが前回実行されたときに使用された装飾済みのファイル名が格納されます。
データコレクターのインデックス値を取得します。インデックス値は、データコレクターセット内でデータコレクターを識別します。
| index | INT* | out | データコレクターのインデックスを受け取るポインタである。 |
解説(Remarks)
PLA は、データコレクターをデータコレクターセットに追加するときにインデックス値を設定します。
| index | INT | in | データコレクターのインデックスを指定する。 |
データコレクターのプロパティの値を記述する XML 文字列を取得します。
| Xml | LPWSTR* | out | 現在のXML 表現を受け取るポインタである。 |
解説(Remarks)
XML 文字列に含まれるプロパティ要素の詳細については、IDataCollector の「解説」セクションを参照してください。
XML に含まれるプロパティのプロパティ値を設定します。(IDataCollector.SetXml)
| Xml | LPWSTR | in | 設定するコレクタープロパティを含む XML。XML 文字列の指定方法の詳細については、IDataCollector の「解説」セクションを参照してください。 |
| Validation | IValueMap** | out | 値が無効な各プロパティの検証エラーを取得するために使用する IValueMap インターフェイス。エラーがなかった場合、IValueMap::Count プロパティはゼロになります。 |
戻り値
解説(Remarks)
XML の構文が有効であれば、1 つ以上のプロパティが無効であっても、この API は S_OK を返します。値が有効なプロパティは設定されます。値が無効なプロパティは既定値に設定されます。
データコレクターを作成するときに XML を IDataCollectorCollection::CreateDataCollectorFromXml プロパティに渡すことでも、コレクターのプロパティを初期化できます。
XML で指定されたコレクター要素がインターフェイスのコレクターの種類と一致しない場合、このメソッドは失敗します。
発生したエラーを特定するには、各エラーの IValueMapItem インターフェイスを取得します。IValueMapItem::Key プロパティにはエラーが発生した要素の XPath(例:/AlertDataCollector/TaskArguments)が、IValueMapItem::Value プロパティにはエラーに関連付けられた HRESULT が、IValueMapItem::Description プロパティにはエラーに関連付けられたメッセージテキストが格納されます。
通常、発生するエラーは次の HRESULT 値のいずれかになります。
| エラー | 説明 |
|---|---|
| PLA_S_PROPERTY_IGNORED | データコレクターが指定されたプロパティを含んでいないため、PLA はそのプロパティ要素を無視しました。 |
| PLA_E_PROPERTY_CONFLICT | プロパティが別のプロパティと競合しています(例:LogAppend と LogCircular の両方が VARIANT_TRUE になっている)。 |
| Latest | VARIANT_BOOL | in | 最新の出力先を作成するかどうかを指定するブール値である。 |
| Location | LPWSTR* | out | 作成された出力先パスを受け取るポインタである。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IDataCollector "{038374FF-098B-11D8-9414-505054503030}" #usecom global IDataCollector IID_IDataCollector "{}" #comfunc global IDataCollector_get_DataCollectorSet 7 sptr #comfunc global IDataCollector_put_DataCollectorSet 8 sptr #comfunc global IDataCollector_get_DataCollectorType 9 var #comfunc global IDataCollector_get_FileName 10 var #comfunc global IDataCollector_put_FileName 11 wstr #comfunc global IDataCollector_get_FileNameFormat 12 var #comfunc global IDataCollector_put_FileNameFormat 13 int #comfunc global IDataCollector_get_FileNameFormatPattern 14 var #comfunc global IDataCollector_put_FileNameFormatPattern 15 wstr #comfunc global IDataCollector_get_LatestOutputLocation 16 var #comfunc global IDataCollector_put_LatestOutputLocation 17 wstr #comfunc global IDataCollector_get_LogAppend 18 var #comfunc global IDataCollector_put_LogAppend 19 int #comfunc global IDataCollector_get_LogCircular 20 var #comfunc global IDataCollector_put_LogCircular 21 int #comfunc global IDataCollector_get_LogOverwrite 22 var #comfunc global IDataCollector_put_LogOverwrite 23 int #comfunc global IDataCollector_get_Name 24 var #comfunc global IDataCollector_put_Name 25 wstr #comfunc global IDataCollector_get_OutputLocation 26 var #comfunc global IDataCollector_get_Index 27 var #comfunc global IDataCollector_put_Index 28 int #comfunc global IDataCollector_get_Xml 29 var #comfunc global IDataCollector_SetXml 30 wstr,sptr #comfunc global IDataCollector_CreateOutputLocation 31 int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IDataCollector "{038374FF-098B-11D8-9414-505054503030}" #usecom global IDataCollector IID_IDataCollector "{}" #comfunc global IDataCollector_get_DataCollectorSet 7 sptr #comfunc global IDataCollector_put_DataCollectorSet 8 sptr #comfunc global IDataCollector_get_DataCollectorType 9 sptr #comfunc global IDataCollector_get_FileName 10 sptr #comfunc global IDataCollector_put_FileName 11 wstr #comfunc global IDataCollector_get_FileNameFormat 12 sptr #comfunc global IDataCollector_put_FileNameFormat 13 int #comfunc global IDataCollector_get_FileNameFormatPattern 14 sptr #comfunc global IDataCollector_put_FileNameFormatPattern 15 wstr #comfunc global IDataCollector_get_LatestOutputLocation 16 sptr #comfunc global IDataCollector_put_LatestOutputLocation 17 wstr #comfunc global IDataCollector_get_LogAppend 18 sptr #comfunc global IDataCollector_put_LogAppend 19 int #comfunc global IDataCollector_get_LogCircular 20 sptr #comfunc global IDataCollector_put_LogCircular 21 int #comfunc global IDataCollector_get_LogOverwrite 22 sptr #comfunc global IDataCollector_put_LogOverwrite 23 int #comfunc global IDataCollector_get_Name 24 sptr #comfunc global IDataCollector_put_Name 25 wstr #comfunc global IDataCollector_get_OutputLocation 26 sptr #comfunc global IDataCollector_get_Index 27 sptr #comfunc global IDataCollector_put_Index 28 int #comfunc global IDataCollector_get_Xml 29 sptr #comfunc global IDataCollector_SetXml 30 wstr,sptr #comfunc global IDataCollector_CreateOutputLocation 31 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。