IConfigurationDataCollector
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
収集時点でのコンピューターの設定を収集します。
解説(Remarks)
以下の例は、このオブジェクトを作成するために CreateDataCollectorFromXml を呼び出す場合に、このオブジェクトの初期化に使用できる XML を示しています。IDataCollector::Xml プロパティもこの XML を返します。
<ConfigurationDataCollector>
<FileMaxCount/>
<FileMaxRecursiveDepth/>
<FileMaxTotalSize/>
<File/> <!-- Specify this element for each file -->
<ManagementQuery/> <!-- Specify this element for each WMI query -->
<QueryNetworkAdapters/>
<RegistryKey/> <!-- Specify this element for each registry key -->
<RegistryMaxRecursiveDepth/>
<SystemStateFile/>
</ConfigurationDataCollector>
この例には、同様に指定する必要がある IDataCollector から継承されたプロパティ要素は示されていない点に注意してください。
コレクターを作成する XML を指定する際は、設定したいプロパティの要素のみを指定できます。プロパティを指定しない場合、PLA は既定値を提供します。コレクターの XML を取得すると、その XML には IDataCollector の要素を含むすべての要素が含まれます。
メソッド 18
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
収集するファイルの最大数を取得または設定します。(Get)
| count | DWORD* | out | 現在の収集するファイルの最大数を受け取るポインタである。 |
収集するファイルの最大数を取得または設定します。(Put)
| count | DWORD | in | 収集するファイルの最大数を設定する。 |
ファイルを再帰的に収集するサブフォルダーの最大数を取得または設定します。(Get)
| depth | DWORD* | out | 現在のファイル収集時の最大再帰深さを受け取るポインタである。 |
ファイルを再帰的に収集するサブフォルダーの最大数を取得または設定します。(Put)
| depth | DWORD | in | ファイル収集時の最大再帰深さを設定する。 |
収集できるすべてのファイルを合計した最大ファイルサイズを取得または設定します。(Get)
| size | DWORD* | out | 現在の収集ファイルの合計最大サイズを受け取るポインタである。 |
収集できるすべてのファイルを合計した最大ファイルサイズを取得または設定します。(Put)
| size | DWORD | in | 収集ファイルの合計最大サイズを設定する。 |
収集するファイルを取得または設定します。(Get)
| Files | SAFEARRAY** | out | 現在の収集対象ファイルの一覧を受け取るポインタである。 |
解説(Remarks)
IConfigurationDataCollector::FileMaxCount、IConfigurationDataCollector::FileMaxRecursiveDepth、IConfigurationDataCollector::FileMaxTotalSize プロパティを使用して、PLA が収集するファイルの数を制限できます。
PLA は IDataCollectorSet::LatestOutputLocation プロパティで指定された場所にファイルをコピーします。同じ名前のファイルが複数ある場合、PLA は最初のファイル名はそのまま残し、同じ名前を持つ以降のすべてのファイルに _n(n は 1 から始まる連番)を付加します。XML レポートを使用して各ファイルの由来を判別できます。
このプロパティは FindFirstFile 関数と FindNextFile 関数を使用して深さ優先探索を実行します。たとえば、次のディレクトリ構造を想定します。
MyDir
Subdir1
Subdir1.1
a.txt
b.txt
Subdir1.2
c.txt
g.txt (folder in Subdir1)
h.txt (folder in Subdir1)
Subdir 2
subdir2.1
y.txt
z.txt
subdir2.1.1
m.txt
q.txt (folder in MyDir)
s.txt (folder in MyDir)
PLA は次の順序でファイルを収集します(制限に達しなかった場合)。
q.txt
s.txt
g.txt
h.txt
a.txt
b.txt
c.txt
y.txt
z.txt
m.txt
収集するファイルを取得または設定します。(Put)
| Files | SAFEARRAY* | in | 収集対象ファイルの一覧を設定する。 |
解説(Remarks)
IConfigurationDataCollector::FileMaxCount、IConfigurationDataCollector::FileMaxRecursiveDepth、IConfigurationDataCollector::FileMaxTotalSize プロパティを使用して、PLA が収集するファイルの数を制限できます。
PLA は IDataCollectorSet::LatestOutputLocation プロパティで指定された場所にファイルをコピーします。同じ名前のファイルが複数ある場合、PLA は最初のファイル名はそのまま残し、同じ名前を持つ以降のすべてのファイルに _n(n は 1 から始まる連番)を付加します。XML レポートを使用して各ファイルの由来を判別できます。
このプロパティは FindFirstFile 関数と FindNextFile 関数を使用して深さ優先探索を実行します。たとえば、次のディレクトリ構造を想定します。
MyDir
Subdir1
Subdir1.1
a.txt
b.txt
Subdir1.2
c.txt
g.txt (folder in Subdir1)
h.txt (folder in Subdir1)
Subdir 2
subdir2.1
y.txt
z.txt
subdir2.1.1
m.txt
q.txt (folder in MyDir)
s.txt (folder in MyDir)
PLA は次の順序でファイルを収集します(制限に達しなかった場合)。
q.txt
s.txt
g.txt
h.txt
a.txt
b.txt
c.txt
y.txt
z.txt
m.txt
実行する Windows Management Instrumentation (WMI) クエリを取得または設定します。(Get)
| Queries | SAFEARRAY** | out | 現在の実行する WMI 管理クエリの一覧を受け取るポインタである。 |
解説(Remarks)
WMI クエリの記述方法の詳細については、WQL (SQL for WMI) を参照してください。
実行する Windows Management Instrumentation (WMI) クエリを取得または設定します。(Put)
| Queries | SAFEARRAY* | in | 実行する WMI 管理クエリの一覧を設定する。 |
解説(Remarks)
WMI クエリの記述方法の詳細については、WQL (SQL for WMI) を参照してください。
インストールされているネットワークアダプターに対して、オフロード機能やその他の構成情報を照会するかどうかを示す値を取得または設定します。(Get)
| network | VARIANT_BOOL* | out | 現在のネットワークアダプターを照会するかどうかを受け取るポインタである。 |
インストールされているネットワークアダプターに対して、オフロード機能やその他の構成情報を照会するかどうかを示す値を取得または設定します。(Put)
| network | VARIANT_BOOL | in | ネットワークアダプターを照会するかどうかを設定する。 |
収集するレジストリキーの一覧を取得または設定します。
| query | SAFEARRAY** | out | 未定 |
解説(Remarks)
次のレジストリハイブからレジストリデータを収集できます。
レジストリ値を収集するには、値名までのフルパスを指定します。たとえば \HKEY_LOCAL_MACHINE\MyKey\MyValue のように指定します。
レジストリキー配下のすべての値を収集するには、レジストリキーまでのフルパスを指定します。たとえば \HKEY_LOCAL_MACHINE\MyKey\ のように指定します。
レジストリキーとそのサブキー配下のすべての値を収集するには、パスの最後の区切りにバックスラッシュを 2 つ使用します。たとえば \\computername\HKEY_LOCAL_MACHINE\MyKey\\ のように指定します。PLA は IConfigurationDataCollector::RegistryMaxRecursiveDepth プロパティで指定されたレベルまでレジストリデータを再帰的に収集します。
リモートコンピューターからレジストリ情報を収集するには、レジストリパスの先頭にコンピューター名を含めます。たとえば \\computername\HKEY_LOCAL_MACHINE\MyKey\MyValue のように指定します。
収集するレジストリキーの一覧を取得または設定します。(Put)
| query | SAFEARRAY* | in | 収集対象のレジストリキーの一覧を設定する。 |
解説(Remarks)
次のレジストリハイブからレジストリデータを収集できます。
レジストリ値を収集するには、値名までのフルパスを指定します。たとえば `\HKEY_LOCAL_MACHINE\MyKey\MyValue` のように指定します。レジストリキー配下のすべての値を収集するには、レジストリキーまでのフルパスを指定します。たとえば \HKEY_LOCAL_MACHINE\MyKey\ のように指定します。
レジストリキーとそのサブキー配下のすべての値を収集するには、パスの最後の区切りにバックスラッシュを 2 つ使用します。たとえば \\computername\HKEY_LOCAL_MACHINE\MyKey\\ のように指定します。PLA は IConfigurationDataCollector::RegistryMaxRecursiveDepth プロパティで指定されたレベルまでレジストリデータを再帰的に収集します。
リモートコンピューターからレジストリ情報を収集するには、レジストリパスの先頭にコンピューター名を含めます。たとえば \\computername\HKEY_LOCAL_MACHINE\MyKey\MyValue のように指定します。
レジストリ値を再帰的に収集するサブキーの最大数を取得または設定します。(Get)
| depth | DWORD* | out | 現在のレジストリ収集時の最大再帰深さを受け取るポインタである。 |
レジストリ値を再帰的に収集するサブキーの最大数を取得または設定します。(Put)
| depth | DWORD | in | レジストリ収集時の最大再帰深さを設定する。 |
保存されたシステム状態を格納するファイルの名前を取得または設定します。(Get)
| FileName | LPWSTR* | out | 現在のシステム状態ファイル名を受け取るポインタである。 |
解説(Remarks)
ファイル名にはパスを含めないでください。ファイルへのパスは IDataCollectorSet::RootPath プロパティと IDataCollectorSet::Subdirectory プロパティによって決まります。
ファイルの名前を指定しない場合、システム状態は取得されません。
この状態情報は Circular Kernel Context Logger のスナップショットです。このコンテキストロガーはコンピューターの現在の状態のスナップショットを提供します。このファイルにはカーネルイベントが含まれます。TraceRpt.exe ツールを使用してイベントをデコードできます。
保存されたシステム状態を格納するファイルの名前を取得または設定します。(Put)
| FileName | LPWSTR | in | システム状態ファイル名を設定する。 |
解説(Remarks)
ファイル名にはパスを含めないでください。ファイルへのパスは IDataCollectorSet::RootPath プロパティと IDataCollectorSet::Subdirectory プロパティによって決まります。
ファイルの名前を指定しない場合、システム状態は取得されません。
この状態情報は Circular Kernel Context Logger のスナップショットです。このコンテキストロガーはコンピューターの現在の状態のスナップショットを提供します。このファイルにはカーネルイベントが含まれます。TraceRpt.exe ツールを使用してイベントをデコードできます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IConfigurationDataCollector "{03837514-098B-11D8-9414-505054503030}" #usecom global IConfigurationDataCollector IID_IConfigurationDataCollector "{}" #comfunc global IConfigurationDataCollector_get_FileMaxCount 32 var #comfunc global IConfigurationDataCollector_put_FileMaxCount 33 int #comfunc global IConfigurationDataCollector_get_FileMaxRecursiveDepth 34 var #comfunc global IConfigurationDataCollector_put_FileMaxRecursiveDepth 35 int #comfunc global IConfigurationDataCollector_get_FileMaxTotalSize 36 var #comfunc global IConfigurationDataCollector_put_FileMaxTotalSize 37 int #comfunc global IConfigurationDataCollector_get_Files 38 var #comfunc global IConfigurationDataCollector_put_Files 39 var #comfunc global IConfigurationDataCollector_get_ManagementQueries 40 var #comfunc global IConfigurationDataCollector_put_ManagementQueries 41 var #comfunc global IConfigurationDataCollector_get_QueryNetworkAdapters 42 var #comfunc global IConfigurationDataCollector_put_QueryNetworkAdapters 43 int #comfunc global IConfigurationDataCollector_get_RegistryKeys 44 var #comfunc global IConfigurationDataCollector_put_RegistryKeys 45 var #comfunc global IConfigurationDataCollector_get_RegistryMaxRecursiveDepth 46 var #comfunc global IConfigurationDataCollector_put_RegistryMaxRecursiveDepth 47 int #comfunc global IConfigurationDataCollector_get_SystemStateFile 48 var #comfunc global IConfigurationDataCollector_put_SystemStateFile 49 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IConfigurationDataCollector "{03837514-098B-11D8-9414-505054503030}" #usecom global IConfigurationDataCollector IID_IConfigurationDataCollector "{}" #comfunc global IConfigurationDataCollector_get_FileMaxCount 32 sptr #comfunc global IConfigurationDataCollector_put_FileMaxCount 33 int #comfunc global IConfigurationDataCollector_get_FileMaxRecursiveDepth 34 sptr #comfunc global IConfigurationDataCollector_put_FileMaxRecursiveDepth 35 int #comfunc global IConfigurationDataCollector_get_FileMaxTotalSize 36 sptr #comfunc global IConfigurationDataCollector_put_FileMaxTotalSize 37 int #comfunc global IConfigurationDataCollector_get_Files 38 sptr #comfunc global IConfigurationDataCollector_put_Files 39 sptr #comfunc global IConfigurationDataCollector_get_ManagementQueries 40 sptr #comfunc global IConfigurationDataCollector_put_ManagementQueries 41 sptr #comfunc global IConfigurationDataCollector_get_QueryNetworkAdapters 42 sptr #comfunc global IConfigurationDataCollector_put_QueryNetworkAdapters 43 int #comfunc global IConfigurationDataCollector_get_RegistryKeys 44 sptr #comfunc global IConfigurationDataCollector_put_RegistryKeys 45 sptr #comfunc global IConfigurationDataCollector_get_RegistryMaxRecursiveDepth 46 sptr #comfunc global IConfigurationDataCollector_put_RegistryMaxRecursiveDepth 47 int #comfunc global IConfigurationDataCollector_get_SystemStateFile 48 sptr #comfunc global IConfigurationDataCollector_put_SystemStateFile 49 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。