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

ITraceDataProvider

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

公式ドキュメント

トレースセッションで有効にするトレースプロバイダーを指定します。

解説(Remarks)

特定のプロバイダーの表示名または GUID のみを取得したい場合や、そのプロバイダーとして登録されているプロセスの一覧のみを取得したい場合は、CoCreateInstance 関数を呼び出し、クラス識別子として __uuidof(TraceDataProvider) を、インターフェイス識別子として __uuidof(ITraceDataProvider) を渡すことで、このインターフェイスを取得できます。この目的でスクリプトからオブジェクトを作成するには、Pla.TraceDataProvider プログラム識別子を使用します。

インターフェイスを ITraceDataProviderCollection コレクションに追加する場合は、CoCreateInstance 関数を使用しないでください。

メソッド 19

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_DisplayName(LPWSTR* name)

プロバイダーの表示名を取得または設定します。(Get)

nameLPWSTR*out現在の表示名を受け取るポインタである。
vtbl 8 HRESULT put_DisplayName(LPWSTR name)

プロバイダーの表示名を取得または設定します。(Put)

nameLPWSTRin表示名を設定する。
vtbl 9 HRESULT get_Guid(GUID* guid)

プロバイダーの GUID を取得または設定します。(Get)

guidGUID*out現在のGUIDを受け取るポインタである。
vtbl 10 HRESULT put_Guid(GUID guid)

プロバイダーの GUID を取得または設定します。(Put)

guidGUIDinGUIDを設定する。
vtbl 11 HRESULT get_Level(IValueMap** ppLevel)

プロバイダーを有効にするために使用する情報のレベルを取得します。

ppLevelIValueMap**outトレースレベルを表す IValueMap を受け取るポインタである。

解説(Remarks)

ppLevel パラメーターは、イベントが生成する情報のレベルを指定するプロバイダー定義の値です。たとえば、この値を使用して、プロバイダーに生成させたいイベントの重大度レベル(情報、警告、エラー)を示すことができます。

レベル値の取得または設定には IValueMap インターフェイスを使用します。IValueMap::Value プロパティにはレベル値が格納されます。

また、IValueMap::Add メソッドを使用して 1 つ以上のレベル値を追加することもできます。IValueMapItem インターフェイスを使用する必要があるのは、レベルに名前を付けたい場合、またはレベルを追加・削除せずに有効化・無効化したい場合のみです。有効にできるレベルは 1 つだけです。

IValueMapItem::Key プロパティにはレベルの文字列表現(例: Information)が格納されます。IValueMapItem::Value プロパティにはレベル値が格納されます。IValueMapItem::Enabled プロパティは、レベルが有効かどうかを示します。

IValueMap::Value を使用してレベルを設定し、値マップコレクションに 1 つ以上の項目が含まれている場合、PLA はコレクション内で一致する値を検索し、それを有効にして他を無効にします。値が一覧に存在しない場合、PLA はそのレベルを追加します(項目には名前が付きません)。

vtbl 12 HRESULT get_KeywordsAny(IValueMap** ppKeywords)

プロバイダーに書き込ませたいイベントのカテゴリを決定するキーワードの一覧を取得します。

ppKeywordsIValueMap**outいずれかに一致するキーワードを表す IValueMap を受け取るポインタである。

解説(Remarks)

キーワードは、プロバイダーに書き込ませたいイベントのカテゴリを決定します。イベントのキーワードビットのいずれかが、この KeywordsAny マスクに設定されたビットのいずれかと一致する場合、プロバイダーはそのイベントを書き込みます。

プロバイダーが提供するすべてのイベントを含めるには、このプロパティを 0 に設定します。特定のイベントのみを含めるには、このキーワードマスクをそれらの特定のイベントに設定します。たとえば、プロバイダーが初期化およびクリーンアップルーチン用のイベント(ビット 0)、ファイル操作用のイベント(ビット 1)、計算操作用のイベント(ビット 2)を定義している場合、このマスクを 5(ビット 0 と 2 を設定)に設定することで、これらのイベントのうち 2 つのみ、つまり初期化・クリーンアップイベントと計算イベントを受け取るように選択できます。

プロバイダーに書き込ませたいイベントのカテゴリをさらに制限するには、ITraceDataProvider::KeywordsAll プロパティも設定します。

プロバイダーがより複雑なイベントキーワードを定義している場合(たとえば、読み取り用にビット 0、ローカルアクセス用にビット 1 を設定するイベントと、読み取り用にビット 0、リモートアクセス用にビット 2 を設定する 2 つ目のイベントを定義している場合)、このマスクを 1 に設定してすべての読み取りイベントを受け取ることも、このマスクを 1 に、KeywordsAll マスクを 3 に設定してローカル読み取りのみを受け取ることもできます。

イベントのキーワードが 0 の場合、プロバイダーはこのマスクや KeywordsAll マスクに関係なく、そのイベントをセッションに書き込みます。

Windows Vista より前のオペレーティングシステム向けに書かれたプロバイダーの場合、キーワード値は有効化フラグにマッピングされます。

キーワード値の取得または設定には IValueMap インターフェイスを使用します。IValueMap::Value プロパティを使用してキーワード値(マップ内のすべての項目を OR 演算子で結合した値)を取得することも、マップ内の各項目を列挙して個々のキーワード値を取得することもできます。

同様に、キーワード値を設定する場合は、IValueMap::Value プロパティを呼び出してキーワード値を設定するか、IValueMap::Add メソッドを呼び出して個々のキーワード値を追加します。

IValueMap::Value を使用してキーワードを設定し、値マップに 1 つ以上の項目が含まれている場合、PLA はコレクション内で一致する値を検索し、それらを有効にして他を無効にします。値が一覧に存在しない場合、PLA はそのキーワードを追加します(項目には名前が付きません)。

IValueMapItem::Key プロパティにはキーワードの文字列表現が格納されます。IValueMapItem::Value プロパティにはキーワード値が格納されます。IValueMapItem::Enabled プロパティは、キーワードが有効かどうかを示します。IValueMapItem インターフェイスを使用する必要があるのは、キーワードに名前を付けたい場合、またはキーワードを追加・削除せずに有効化・無効化したい場合のみです。

vtbl 13 HRESULT get_KeywordsAll(IValueMap** ppKeywords)

プロバイダーに書き込ませたいイベントのカテゴリを制限するキーワードの一覧を取得します。

ppKeywordsIValueMap**outすべてに一致するキーワードを表す IValueMap を受け取るポインタである。

解説(Remarks)

イベントのキーワードビットのいずれかが KeywordsAny プロパティに設定されたビットのいずれかと一致する場合、プロバイダーはそのイベントを書き込みます。 KeywordsAll プロパティで指定されたキーワードは、プロバイダーに書き込ませたいイベントのカテゴリをさらに制限します。イベントのキーワードが KeywordsAny の条件を満たす場合、プロバイダーは KeywordsAll マスク内のすべてのビットがイベントのキーワードに存在する場合にのみ、そのイベントを書き込みます。KeywordsAny が 0 の場合、KeywordsAll マスクは使用されません。

KeywordsAllKeywordsAny の条件がどのように関連するかについて詳しくは、KeywordsAny の「解説」セクションを参照してください。

キーワード値の取得または設定には IValueMap インターフェイスを使用します。IValueMap::Value プロパティを使用してキーワード値(マップ内のすべての項目を OR 演算子で結合した値)を取得することも、マップ内の各項目を列挙して個々のキーワード値を取得することもできます。

同様に、キーワード値を設定する場合は、IValueMap::Value プロパティを呼び出してキーワード値を設定するか、IValueMap::Add メソッドを呼び出して個々のキーワード値を追加します。

IValueMap::Value を使用してキーワードを設定し、値マップに 1 つ以上の項目が含まれている場合、PLA はコレクション内で一致する値を検索し、それらを有効にして他を無効にします。値が一覧に存在しない場合、PLA はそのキーワードを追加します(項目には名前が付きません)。

IValueMapItem::Key プロパティにはキーワードの文字列表現が格納されます。IValueMapItem::Value プロパティにはキーワード値が格納されます。IValueMapItem::Enabled プロパティは、キーワードが有効かどうかを示します。IValueMapItem インターフェイスを使用する必要があるのは、キーワードに名前を付けたい場合、またはキーワードを追加・削除せずに有効化・無効化したい場合のみです。

vtbl 14 HRESULT get_Properties(IValueMap** ppProperties)

Event Tracing for Windows (ETW) がイベントに含める拡張データ項目の一覧を取得します。

ppPropertiesIValueMap**outプロバイダーのプロパティを表す IValueMap を受け取るポインタである。

解説(Remarks)

このプロパティを使用して、イベントとともに次のデータ項目を要求します。

データ項目 説明
Sid (値 0x01) ユーザーのセキュリティ識別子を含めます。
SessionId (値 0x02) セッション識別子を含めます。
StackTrace (値 0x04) スタックトレースを含めます。

拡張データ項目の取得または指定には IValueMap インターフェイスを使用します。IValueMap::Value プロパティには OR 演算子で結合された項目が格納されます。IValueMapItem::Key プロパティには拡張データ項目の文字列表現が格納されます。IValueMapItem::Value プロパティには拡張データ項目の値が格納されます。

vtbl 15 HRESULT get_FilterEnabled(VARIANT_BOOL* FilterEnabled)

フィルターデータをプロバイダーの有効化に使用するかどうかを決定する値を取得または設定します。(Get)

FilterEnabledVARIANT_BOOL*out現在のフィルタが有効かどうかを受け取るポインタである。
vtbl 16 HRESULT put_FilterEnabled(VARIANT_BOOL FilterEnabled)

フィルターデータをプロバイダーの有効化に使用するかどうかを決定する値を取得または設定します。(Put)

FilterEnabledVARIANT_BOOLinフィルタが有効かどうかを設定する。
vtbl 17 HRESULT get_FilterType(DWORD* pulType)

プロバイダー定義のフィルタータイプを取得または設定します。(Get)

pulTypeDWORD*outフィルタの種類を受け取るポインタである。
vtbl 18 HRESULT put_FilterType(DWORD ulType)

プロバイダー定義のフィルタータイプを取得または設定します。(Put)

ulTypeDWORDinフィルタの種類を指定する。
vtbl 19 HRESULT get_FilterData(SAFEARRAY** ppData)

フィルタリングの目的でトレースデータプロバイダーに送信される任意のデータを取得または設定します。(Get)

ppDataSAFEARRAY**outフィルタデータを受け取るポインタである。
vtbl 20 HRESULT put_FilterData(SAFEARRAY* pData)

フィルタリングの目的でトレースデータプロバイダーに送信される任意のデータを取得または設定します。(Put)

pDataSAFEARRAY*in設定するフィルタデータを指定する。
vtbl 21 HRESULT Query(LPWSTR bstrName, LPWSTR bstrServer)

登録済みプロバイダーに関する詳細を取得します。

bstrNameLPWSTRin登録済みプロバイダーの名前。名前は大文字と小文字を区別しません。プロバイダーの GUID の文字列形式を指定することもできます。
bstrServerLPWSTRinoptionalプロバイダーが登録されているコンピューター。コンピューター名、完全修飾ドメイン名、または IP アドレスを指定できます。

戻り値

成功した場合は S_OK を返します。

解説(Remarks)

カーネルプロバイダーを指定するには、bstrName パラメーターを "Windows Kernel Trace" に設定します。

コンテキストロガーを指定するには、bstrName を "Circular Kernel Context Logger" に設定します。コンテキストロガーは、コンピューターの現在の状態のスナップショットを提供します。ロガーは(ファイルではなく)メモリ内の 100 メガバイトの循環ログに書き込みます。その内容をコンシューマーに公開するには、IDataCollectorSet::Commit メソッドを呼び出してセッションをフラッシュします。

vtbl 22 HRESULT Resolve(IDispatch* pFrom)

プロバイダーに関する詳細をこのインスタンスにマージします。

pFromIDispatch*inoptionalこのインスタンスにマージするプロバイダーのインターフェイス。

戻り値

成功した場合は S_OK を返します。

解説(Remarks)

プロバイダーのインターフェイス、またはそのプロバイダーを含むコレクションを指定できます。コレクションを指定した場合、このメソッドは一致するプロバイダーを検索します。

vtbl 23 HRESULT SetSecurity(LPWSTR Sddl)

トレースデータプロバイダーのセキュリティ情報を設定します。

SddlLPWSTRinオブジェクトのセキュリティ記述子を記述する文字列。詳しくは、Security Descriptor Definition Language を参照してください。

戻り値

成功した場合は S_OK を返します。

vtbl 24 HRESULT GetSecurity(DWORD SecurityInfo, LPWSTR* Sddl)

トレースデータプロバイダーのセキュリティ情報を取得します。

SecurityInfoDWORDinオブジェクトに関連するセキュリティ情報。詳しくは、SECURITY_INFORMATION データ型を参照してください。
SddlLPWSTR*outオブジェクトのセキュリティ記述子を記述する文字列。詳しくは、Security Descriptor Definition Language を参照してください。

戻り値

成功した場合は S_OK を返します。

vtbl 25 HRESULT GetRegisteredProcesses(IValueMap** Processes)

Event Tracing for Windows (ETW) プロバイダーとして登録されているプロセスの一覧を取得します。

ProcessesIValueMap**outETW プロバイダーとして登録されているプロセスの一覧を含む IValueMap インターフェイス。IValueMapItem::Key プロパティにはバイナリの名前が格納され、IValueMapItem::Value プロパティにはプロセス識別子が格納されます。

戻り値

成功した場合は S_OK を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ITraceDataProvider "{03837512-098B-11D8-9414-505054503030}"
#usecom global ITraceDataProvider IID_ITraceDataProvider "{03837513-098B-11D8-9414-505054503030}"
#comfunc global ITraceDataProvider_get_DisplayName         7 var
#comfunc global ITraceDataProvider_put_DisplayName         8 wstr
#comfunc global ITraceDataProvider_get_Guid                9 var
#comfunc global ITraceDataProvider_put_Guid                10 int
#comfunc global ITraceDataProvider_get_Level               11 sptr
#comfunc global ITraceDataProvider_get_KeywordsAny         12 sptr
#comfunc global ITraceDataProvider_get_KeywordsAll         13 sptr
#comfunc global ITraceDataProvider_get_Properties          14 sptr
#comfunc global ITraceDataProvider_get_FilterEnabled       15 var
#comfunc global ITraceDataProvider_put_FilterEnabled       16 int
#comfunc global ITraceDataProvider_get_FilterType          17 var
#comfunc global ITraceDataProvider_put_FilterType          18 int
#comfunc global ITraceDataProvider_get_FilterData          19 var
#comfunc global ITraceDataProvider_put_FilterData          20 var
#comfunc global ITraceDataProvider_Query                   21 wstr,wstr
#comfunc global ITraceDataProvider_Resolve                 22 sptr
#comfunc global ITraceDataProvider_SetSecurity             23 wstr
#comfunc global ITraceDataProvider_GetSecurity             24 int,var
#comfunc global ITraceDataProvider_GetRegisteredProcesses  25 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。