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

IDataCollector

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

公式ドキュメント

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。

vtbl 7 HRESULT get_DataCollectorSet(IDataCollectorSet** group)

このデータコレクターが属するデータコレクターセットを取得します。

groupIDataCollectorSet**out現在の所属するデータコレクターセットを受け取るポインタである。
vtbl 8 HRESULT put_DataCollectorSet(IDataCollectorSet* group)
groupIDataCollectorSet*inoptional所属するデータコレクターセットを設定する。
vtbl 9 HRESULT get_DataCollectorType(DataCollectorType* type)

このデータコレクターの種類(例:パフォーマンスデータコレクター)を取得します。

typeDataCollectorType*out現在のデータコレクターの種類を受け取るポインタである。

解説(Remarks)

PLA は、データコレクターを作成するときに種類を設定します。

vtbl 10 HRESULT get_FileName(LPWSTR* name)

データコレクターのデータを格納するファイルのベース名を取得または設定します。(Get)

nameLPWSTR*out現在のファイル名を受け取るポインタである。

解説(Remarks)

IDataCollector::FileNameFormat プロパティで書式設定オプションを指定した場合、実際に使用されるファイル名は異なることがあります。実際に使用されたファイル名は IDataCollector::LatestOutputLocation プロパティに格納されます。

ファイル名にパスを含めないでください。ファイルへのパスは IDataCollectorSet::RootPath プロパティと IDataCollectorSet::Subdirectory プロパティによって決まります。

指定するファイル名拡張子は、データコレクターの種類によって異なります。次の表は、各データコレクターで使用する正しい拡張子を示しています。別の拡張子を指定した場合、PLA はそれを使用します。拡張子を指定しない場合、PLA はファイルに正しい拡張子を追加します。

データコレクターの種類 使用する拡張子
構成データコレクター .xml
パフォーマンスデータコレクター IPerformanceCounterDataCollector::LogFileFormat プロパティの値に応じて、.blg、.csv、または .tsv になります。
トレースデータコレクター .etl

ファイルが既に存在する場合に実行される処理は、IDataCollector::LogAppend プロパティと IDataCollector::LogOverwrite プロパティによって決まります。

vtbl 11 HRESULT put_FileName(LPWSTR name)

データコレクターのデータを格納するファイルのベース名を取得または設定します。(Put)

nameLPWSTRinファイル名を設定する。

解説(Remarks)

IDataCollector::FileNameFormat プロパティで書式設定オプションを指定した場合、実際に使用されるファイル名は異なることがあります。実際に使用されたファイル名は IDataCollector::LatestOutputLocation プロパティに格納されます。

ファイル名にパスを含めないでください。ファイルへのパスは IDataCollectorSet::RootPath プロパティと IDataCollectorSet::Subdirectory プロパティによって決まります。

指定するファイル名拡張子は、データコレクターの種類によって異なります。次の表は、各データコレクターで使用する正しい拡張子を示しています。別の拡張子を指定した場合、PLA はそれを使用します。拡張子を指定しない場合、PLA はファイルに正しい拡張子を追加します。

データコレクターの種類 使用する拡張子
構成データコレクター .xml
パフォーマンスデータコレクター IPerformanceCounterDataCollector::LogFileFormat プロパティの値に応じて、.blg、.csv、または .tsv になります。
トレースデータコレクター .etl

ファイルが既に存在する場合に実行される処理は、IDataCollector::LogAppend プロパティと IDataCollector::LogOverwrite プロパティによって決まります。

vtbl 12 HRESULT get_FileNameFormat(AutoPathFormat* format)

ファイル名を装飾する方法を記述するフラグを取得または設定します。(Get)

formatAutoPathFormat*out現在のファイル名の自動生成形式を受け取るポインタである。

解説(Remarks)

PLA はファイル名に装飾を追加します。たとえば plaMonthDayHour を指定すると、PLA は現在の月、日、時の値をファイル名に追加します。ファイル名が MyFile の場合、結果は MyFile110816 のようになります。

vtbl 13 HRESULT put_FileNameFormat(AutoPathFormat format)

ファイル名を装飾する方法を記述するフラグを取得または設定します。(Put)

formatAutoPathFormatinファイル名の自動生成形式を設定する。

解説(Remarks)

PLA はファイル名に装飾を追加します。たとえば plaMonthDayHour を指定すると、PLA は現在の月、日、時の値をファイル名に追加します。ファイル名が MyFile の場合、結果は MyFile110816 のようになります。

vtbl 14 HRESULT get_FileNameFormatPattern(LPWSTR* pattern)

ファイル名を装飾するときに使用する書式パターンを取得または設定します。(Get)

patternLPWSTR*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 は任意の文字です。エスケープされていない認識されない文字(空白を除く)はエラーになります。
vtbl 15 HRESULT put_FileNameFormatPattern(LPWSTR pattern)

ファイル名を装飾するときに使用する書式パターンを取得または設定します。(Put)

patternLPWSTRinファイル名の生成パターンを設定する。

解説(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 は任意の文字です。エスケープされていない認識されない文字(空白を除く)はエラーになります。
vtbl 16 HRESULT get_LatestOutputLocation(LPWSTR* path)

PLA が前回ファイルを作成したときに使用した、完全に装飾されたファイル名を取得または設定します。(IDataCollector.get_LatestOutputLocation)

pathLPWSTR*out現在の最新の出力先パスを受け取るポインタである。

解説(Remarks)

通常、このプロパティは設定しません。データコレクターが開始すると、PLA は IDataCollector::OutputLocation プロパティの値を使用してこのプロパティを設定します。

ファイルが削除された場合は、このプロパティを空に設定できます。

トレースデータコレクターの場合に限り、このプロパティに使用するファイルの名前を設定できます。設定しない場合、PLA は他のデータコレクターと同様にファイルを作成します。

vtbl 17 HRESULT put_LatestOutputLocation(LPWSTR path)

PLA が前回ファイルを作成したときに使用した、完全に装飾されたファイル名を取得または設定します。(IDataCollector.put_LatestOutputLocation)

pathLPWSTRin最新の出力先パスを設定する。

解説(Remarks)

通常、このプロパティは設定しません。データコレクターが開始すると、PLA は IDataCollector::OutputLocation プロパティの値を使用してこのプロパティを設定します。

ファイルが削除された場合は、このプロパティを空に設定できます。

トレースデータコレクターの場合に限り、このプロパティに使用するファイルの名前を設定できます。設定しない場合、PLA は他のデータコレクターと同様にファイルを作成します。

vtbl 18 HRESULT get_LogAppend(VARIANT_BOOL* append)

収集したデータを現在のファイルに追加するかどうかを示す値を取得または設定します。(Get)

appendVARIANT_BOOL*out現在の既存ログに追記するかどうかを受け取るポインタである。

解説(Remarks)

このプロパティが IDataCollector::LogCircular プロパティまたは IDataCollector::LogOverwrite プロパティと競合する場合、検証エラーが発生します。

vtbl 19 HRESULT put_LogAppend(VARIANT_BOOL append)

収集したデータを現在のファイルに追加するかどうかを示す値を取得または設定します。(Put)

appendVARIANT_BOOLin既存ログに追記するかどうかを設定する。

解説(Remarks)

このプロパティが IDataCollector::LogCircular プロパティまたは IDataCollector::LogOverwrite プロパティと競合する場合、検証エラーが発生します。

vtbl 20 HRESULT get_LogCircular(VARIANT_BOOL* circular)

循環ファイルを作成するかどうかを示す値を取得または設定します。(Get)

circularVARIANT_BOOL*out現在の循環ログ形式を使用するかどうかを受け取るポインタである。
vtbl 21 HRESULT put_LogCircular(VARIANT_BOOL circular)

循環ファイルを作成するかどうかを示す値を取得または設定します。(Put)

circularVARIANT_BOOLin循環ログ形式を使用するかどうかを設定する。
vtbl 22 HRESULT get_LogOverwrite(VARIANT_BOOL* overwrite)

現在のファイルを上書きするかどうかを示す値を取得または設定します。(Get)

overwriteVARIANT_BOOL*out現在の既存ログを上書きするかどうかを受け取るポインタである。
vtbl 23 HRESULT put_LogOverwrite(VARIANT_BOOL overwrite)

現在のファイルを上書きするかどうかを示す値を取得または設定します。(Put)

overwriteVARIANT_BOOLin既存ログを上書きするかどうかを設定する。
vtbl 24 HRESULT get_Name(LPWSTR* name)

データコレクターの名前を取得または設定します。(Get)

nameLPWSTR*out現在の名前を受け取るポインタである。
vtbl 25 HRESULT put_Name(LPWSTR name)

データコレクターの名前を取得または設定します。(Put)

nameLPWSTRin名前を設定する。
vtbl 26 HRESULT get_OutputLocation(LPWSTR* path)

PLA が今ファイルを作成するとした場合の、装飾されたファイル名を取得します。

pathLPWSTR*out現在の出力先パスを受け取るポインタである。

解説(Remarks)

IDataCollector::LatestOutputLocation プロパティには、コレクターが前回実行されたときに使用された装飾済みのファイル名が格納されます。

vtbl 27 HRESULT get_Index(INT* index)

データコレクターのインデックス値を取得します。インデックス値は、データコレクターセット内でデータコレクターを識別します。

indexINT*outデータコレクターのインデックスを受け取るポインタである。

解説(Remarks)

PLA は、データコレクターをデータコレクターセットに追加するときにインデックス値を設定します。

vtbl 28 HRESULT put_Index(INT index)
indexINTinデータコレクターのインデックスを指定する。
vtbl 29 HRESULT get_Xml(LPWSTR* Xml)

データコレクターのプロパティの値を記述する XML 文字列を取得します。

XmlLPWSTR*out現在のXML 表現を受け取るポインタである。

解説(Remarks)

XML 文字列に含まれるプロパティ要素の詳細については、IDataCollector の「解説」セクションを参照してください。

vtbl 30 HRESULT SetXml(LPWSTR Xml, IValueMap** Validation)

XML に含まれるプロパティのプロパティ値を設定します。(IDataCollector.SetXml)

XmlLPWSTRin設定するコレクタープロパティを含む XML。XML 文字列の指定方法の詳細については、IDataCollector の「解説」セクションを参照してください。
ValidationIValueMap**out値が無効な各プロパティの検証エラーを取得するために使用する IValueMap インターフェイス。エラーがなかった場合、IValueMap::Count プロパティはゼロになります。

戻り値

メソッドの呼び出しが成功した場合は S_OK を返します。値マップにエラーがないか確認する必要があります。メソッドが S_OK を返し、検証エラーがない場合、コレクターは正常に初期化されています。

解説(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 プロパティが別のプロパティと競合しています(例:LogAppendLogCircular の両方が VARIANT_TRUE になっている)。
vtbl 31 HRESULT CreateOutputLocation(VARIANT_BOOL Latest, LPWSTR* Location)
LatestVARIANT_BOOLin最新の出力先を作成するかどうかを指定するブール値である。
LocationLPWSTR*out作成された出力先パスを受け取るポインタである。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 不要)。