IEventSubscription
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
イベントのサブスクライバーと、サブスクライブ対象のイベントとの関係に関する情報を指定します。パブリッシャーフィルターによって使用されます。
メソッド 34
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
サブスクリプションオブジェクトの一意な ID です。(Get)
| pbstrSubscriptionID | LPWSTR* | out | サブスクリプションの識別子を文字列として受け取る。 |
サブスクリプションオブジェクトの一意な ID です。(Put)
| bstrSubscriptionID | LPWSTR | in | サブスクリプションに設定する識別子を文字列で指定する。 |
サブスクリプションオブジェクトの表示可能な名前です。(Get)
| pbstrSubscriptionName | LPWSTR* | out | サブスクリプションの名前を文字列として受け取る。 |
サブスクリプションオブジェクトの表示可能な名前です。(Put)
| bstrSubscriptionName | LPWSTR | in | サブスクリプションに設定する名前を文字列で指定する。 |
イベントパブリッシャーの一意な ID です。(Get)
| pbstrPublisherID | LPWSTR* | out | サブスクライブ対象のパブリッシャーの識別子を文字列として受け取る。 |
解説(Remarks)
PublisherID プロパティを指定しても、サブスクライバーが他のパブリッシャーによって発行されたイベントを受け取らないことが保証されるわけではありません。
イベントパブリッシャーの一意な ID です。(Put)
| bstrPublisherID | LPWSTR | in | サブスクライブ対象のパブリッシャーの識別子を文字列で指定する。 |
解説(Remarks)
PublisherID プロパティを指定しても、サブスクライバーが他のパブリッシャーによって発行されたイベントを受け取らないことが保証されるわけではありません。
サブスクリプションに関連付けられたイベントクラスの一意な ID です。(Get)
| pbstrEventClassID | LPWSTR* | out | サブスクライブ対象のイベントクラスの識別子を文字列として受け取る。 |
サブスクリプションに関連付けられたイベントクラスの一意な ID です。(Put)
| bstrEventClassID | LPWSTR | in | サブスクライブ対象のイベントクラスの識別子を文字列で指定する。 |
イベントメソッドの名前です。(Get)
| pbstrMethodName | LPWSTR* | out | サブスクライブ対象のメソッド名を文字列として受け取る。 |
イベントメソッドの名前です。(Put)
| bstrMethodName | LPWSTR | in | サブスクライブ対象のメソッド名を文字列で指定する。 |
サブスクライバーコンポーネントの CLSID です(永続サブスクリプションの場合)。(Get)
| pbstrSubscriberCLSID | LPWSTR* | out | サブスクライバーオブジェクトの CLSID を文字列として受け取る。 |
解説(Remarks)
空でない場合、サブスクリプションは永続的であり、SubscriberInterface プロパティは NULL でなければなりません。このプロパティは、永続サブスクリプションにおいて MachineName プロパティと連携して機能します。
サブスクライバーコンポーネントの CLSID です(永続サブスクリプションの場合)。(Put)
| bstrSubscriberCLSID | LPWSTR | in | サブスクライバーオブジェクトの CLSID を文字列で指定する。 |
解説(Remarks)
空でない場合、サブスクリプションは永続的であり、SubscriberInterface プロパティは NULL でなければなりません。このプロパティは、永続サブスクリプションにおいて MachineName プロパティと連携して機能します。
サブスクライバー上のイベントインターフェイスへのマーシャリングされたポインターです(一時サブスクリプションの場合)。(Get)
| ppSubscriberInterface | IUnknown** | out | サブスクライバーのインターフェイスへのポインタを受け取るポインタである。 |
解説(Remarks)
NULL でない場合、サブスクリプションは一時的であり、SubscriberCLSID プロパティは空でなければなりません。
サブスクライバー上のイベントインターフェイスへのマーシャリングされたポインターです(一時サブスクリプションの場合)。(Put)
| pSubscriberInterface | IUnknown* | in | サブスクライバーのインターフェイスへのポインタを指定する。 |
解説(Remarks)
NULL でない場合、サブスクリプションは一時的であり、SubscriberCLSID プロパティは空でなければなりません。
サブスクリプションの所有者がパブリッシャーと同じコンピューターにログオンしている場合にのみ、サブスクリプションがイベントを受け取るかどうかを示します。(Get)
| pfPerUser | BOOL* | out | サブスクリプションがユーザー単位であるかどうかを受け取る。 |
サブスクリプションの所有者がパブリッシャーと同じコンピューターにログオンしている場合にのみ、サブスクリプションがイベントを受け取るかどうかを示します。(Put)
| fPerUser | BOOL | in | サブスクリプションをユーザー単位とするかどうかを指定する。 |
サブスクリプションの作成者のセキュリティ ID です。(Get)
| pbstrOwnerSID | LPWSTR* | out | サブスクリプションの所有者を表す SID を文字列として受け取る。 |
サブスクリプションの作成者のセキュリティ ID です。(Put)
| bstrOwnerSID | LPWSTR | in | サブスクリプションの所有者を表す SID を文字列で指定する。 |
サブスクリプションが有効かどうかを示します。(Get)
| pfEnabled | BOOL* | out | サブスクリプションが有効かどうかを受け取る。 |
解説(Remarks)
サブスクリプションが有効でない場合でも、コレクションには表示され、クエリの対象にもなりますが、パブリッシャーによって発行されたイベントはサブスクライバーに届きません。
サブスクリプションが有効かどうかを示します。(Put)
| fEnabled | BOOL | in | サブスクリプションを有効にするかどうかを指定する。 |
解説(Remarks)
サブスクリプションが有効でない場合でも、コレクションには表示され、クエリの対象にもなりますが、パブリッシャーによって発行されたイベントはサブスクライバーに届きません。
サブスクリプションの表示可能なテキスト説明です。(Get)
| pbstrDescription | LPWSTR* | out | サブスクリプションの説明文字列を受け取る。 |
サブスクリプションの表示可能なテキスト説明です。(Put)
| bstrDescription | LPWSTR | in | サブスクリプションに設定する説明文字列を指定する。 |
サブスクライバーをアクティブ化すべきコンピューターの名前です(永続サブスクリプションの場合)。(Get)
| pbstrMachineName | LPWSTR* | out | サブスクリプションが対象とするマシン名を文字列として受け取る。 |
解説(Remarks)
この情報は、SubscriberCLSID プロパティが空でない場合にのみ意味を持ちます。このプロパティは一時サブスクリプションには影響しません。
サブスクライバーをアクティブ化すべきコンピューターの名前です(永続サブスクリプションの場合)。(Put)
| bstrMachineName | LPWSTR | in | サブスクリプションが対象とするマシン名を文字列で指定する。 |
解説(Remarks)
この情報は、SubscriberCLSID プロパティが空でない場合にのみ意味を持ちます。このプロパティは一時サブスクリプションには影響しません。
パブリッシャーコンテキストを定義するためにプロパティバッグに格納されたプロパティの値を取得します。
| bstrPropertyName | LPWSTR | in | 要求するプロパティの名前です。 |
| propertyValue | VARIANT* | out | 要求したプロパティの値です。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
パブリッシャーフィルターは、サブスクリプションビルダーによって格納されたフィルタープロパティを取得するために、このメソッドを呼び出す必要があります。
パブリッシャーコンテキストを定義するために、プロパティとその値をプロパティバッグに書き込みます。
| bstrPropertyName | LPWSTR | in | 値をプロパティバッグに書き込むプロパティの名前です。プロパティがプロパティバッグに存在しない場合、このメソッドはそれを追加します。 |
| propertyValue | VARIANT* | in | プロパティバッグに書き込むプロパティの値です。プロパティが既にプロパティバッグに存在する場合、このメソッドは現在の値を上書きします。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
プロパティバッグは、サブスクライバーが通知を必要とするイベントに関する情報を格納するために使用されます。たとえば、スポーツティッカーのサブスクライバーが野球のスコアのみを取得したい場合、サブスクリプションオブジェクト内のプロパティバッグを使用してこの制限を指定できます。
パブリッシャーコンテキストを定義するプロパティバッグから、プロパティとその値を削除します。
| bstrPropertyName | LPWSTR | in | 値をプロパティバッグから削除するプロパティの名前です。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
プロパティバッグは、サブスクライバーが通知を必要とするイベントに関する情報を格納するために使用されます。たとえば、スポーツティッカーのサブスクライバーが野球のスコアのみを取得したい場合、サブスクリプションオブジェクト内のプロパティバッグを使用してこの制限を指定できます。
パブリッシャーのプロパティバッグに格納されたプロパティと値のコレクションを取得します。
| collection | IEventObjectCollection** | out | イベントオブジェクトコレクション上の IEventObjectCollection インターフェイスへのポインターのアドレスです。このパラメーターを NULL にすることはできません。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_POINTER、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
プロパティバッグは、サブスクライバーが通知を必要とするイベントに関する情報を格納するために使用されます。たとえば、スポーツティッカーのサブスクライバーが野球のスコアのみを取得したい場合、サブスクリプションオブジェクト内のプロパティバッグを使用してこの制限を指定できます。
サブスクライバーコンテキストを定義するためにプロパティバッグに格納されたプロパティの値を取得します。
| bstrPropertyName | LPWSTR | in | 要求するプロパティの名前です。 |
| propertyValue | VARIANT* | out | 要求したプロパティの値です。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
サブスクライバーコンテキストを定義するために、プロパティとその値をプロパティバッグに書き込みます。
| bstrPropertyName | LPWSTR | in | 値をプロパティバッグに書き込むプロパティの名前です。プロパティがプロパティバッグに存在しない場合、このメソッドはそれを追加します。 |
| propertyValue | VARIANT* | in | プロパティバッグに書き込むプロパティの値です。プロパティが既にプロパティバッグに存在する場合、このメソッドは現在の値を上書きします。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
プロパティバッグは、サブスクライバーが通知を必要とするイベントに関する情報を格納するために使用されます。たとえば、スポーツティッカーのサブスクライバーが野球のスコアのみを取得したい場合、サブスクリプションオブジェクト内のプロパティバッグを使用してこの制限を指定できます。
サブスクライバーコンテキストを定義するプロパティバッグから、プロパティとその値を削除します。
| bstrPropertyName | LPWSTR | in | 値をプロパティバッグから削除するプロパティの名前です。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
サブスクライバーのプロパティバッグに格納されたプロパティと値のコレクションを取得します。
| collection | IEventObjectCollection** | out | イベントオブジェクトコレクション上の IEventObjectCollection インターフェイスへのポインターのアドレスです。このパラメーターを NULL にすることはできません。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_POINTER、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
プロパティバッグは、サブスクライバーが通知を必要とするイベントに関する情報を格納するために使用されます。たとえば、スポーツティッカーのサブスクライバーが野球のスコアのみを取得したい場合、サブスクリプションオブジェクト内のプロパティバッグを使用してこの制限を指定できます。
サブスクライバーがイベントを受け取りたい特定のインターフェイスの識別子です。(Get)
| pbstrInterfaceID | LPWSTR* | out | サブスクライブ対象のインターフェイス ID を文字列として受け取る。 |
サブスクライバーがイベントを受け取りたい特定のインターフェイスの識別子です。(Put)
| bstrInterfaceID | LPWSTR | in | サブスクライブ対象のインターフェイス ID を文字列で指定する。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IEventSubscription "{4A6B0E15-2E38-11D1-9965-00C04FBBB345}" #usecom global IEventSubscription IID_IEventSubscription "{}" #comfunc global IEventSubscription_get_SubscriptionID 7 var #comfunc global IEventSubscription_put_SubscriptionID 8 wstr #comfunc global IEventSubscription_get_SubscriptionName 9 var #comfunc global IEventSubscription_put_SubscriptionName 10 wstr #comfunc global IEventSubscription_get_PublisherID 11 var #comfunc global IEventSubscription_put_PublisherID 12 wstr #comfunc global IEventSubscription_get_EventClassID 13 var #comfunc global IEventSubscription_put_EventClassID 14 wstr #comfunc global IEventSubscription_get_MethodName 15 var #comfunc global IEventSubscription_put_MethodName 16 wstr #comfunc global IEventSubscription_get_SubscriberCLSID 17 var #comfunc global IEventSubscription_put_SubscriberCLSID 18 wstr #comfunc global IEventSubscription_get_SubscriberInterface 19 sptr #comfunc global IEventSubscription_put_SubscriberInterface 20 sptr #comfunc global IEventSubscription_get_PerUser 21 var #comfunc global IEventSubscription_put_PerUser 22 int #comfunc global IEventSubscription_get_OwnerSID 23 var #comfunc global IEventSubscription_put_OwnerSID 24 wstr #comfunc global IEventSubscription_get_Enabled 25 var #comfunc global IEventSubscription_put_Enabled 26 int #comfunc global IEventSubscription_get_Description 27 var #comfunc global IEventSubscription_put_Description 28 wstr #comfunc global IEventSubscription_get_MachineName 29 var #comfunc global IEventSubscription_put_MachineName 30 wstr #comfunc global IEventSubscription_GetPublisherProperty 31 wstr,var #comfunc global IEventSubscription_PutPublisherProperty 32 wstr,var #comfunc global IEventSubscription_RemovePublisherProperty 33 wstr #comfunc global IEventSubscription_GetPublisherPropertyCollection 34 sptr #comfunc global IEventSubscription_GetSubscriberProperty 35 wstr,var #comfunc global IEventSubscription_PutSubscriberProperty 36 wstr,var #comfunc global IEventSubscription_RemoveSubscriberProperty 37 wstr #comfunc global IEventSubscription_GetSubscriberPropertyCollection 38 sptr #comfunc global IEventSubscription_get_InterfaceID 39 var #comfunc global IEventSubscription_put_InterfaceID 40 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IEventSubscription "{4A6B0E15-2E38-11D1-9965-00C04FBBB345}" #usecom global IEventSubscription IID_IEventSubscription "{}" #comfunc global IEventSubscription_get_SubscriptionID 7 sptr #comfunc global IEventSubscription_put_SubscriptionID 8 wstr #comfunc global IEventSubscription_get_SubscriptionName 9 sptr #comfunc global IEventSubscription_put_SubscriptionName 10 wstr #comfunc global IEventSubscription_get_PublisherID 11 sptr #comfunc global IEventSubscription_put_PublisherID 12 wstr #comfunc global IEventSubscription_get_EventClassID 13 sptr #comfunc global IEventSubscription_put_EventClassID 14 wstr #comfunc global IEventSubscription_get_MethodName 15 sptr #comfunc global IEventSubscription_put_MethodName 16 wstr #comfunc global IEventSubscription_get_SubscriberCLSID 17 sptr #comfunc global IEventSubscription_put_SubscriberCLSID 18 wstr #comfunc global IEventSubscription_get_SubscriberInterface 19 sptr #comfunc global IEventSubscription_put_SubscriberInterface 20 sptr #comfunc global IEventSubscription_get_PerUser 21 sptr #comfunc global IEventSubscription_put_PerUser 22 int #comfunc global IEventSubscription_get_OwnerSID 23 sptr #comfunc global IEventSubscription_put_OwnerSID 24 wstr #comfunc global IEventSubscription_get_Enabled 25 sptr #comfunc global IEventSubscription_put_Enabled 26 int #comfunc global IEventSubscription_get_Description 27 sptr #comfunc global IEventSubscription_put_Description 28 wstr #comfunc global IEventSubscription_get_MachineName 29 sptr #comfunc global IEventSubscription_put_MachineName 30 wstr #comfunc global IEventSubscription_GetPublisherProperty 31 wstr,sptr #comfunc global IEventSubscription_PutPublisherProperty 32 wstr,sptr #comfunc global IEventSubscription_RemovePublisherProperty 33 wstr #comfunc global IEventSubscription_GetPublisherPropertyCollection 34 sptr #comfunc global IEventSubscription_GetSubscriberProperty 35 wstr,sptr #comfunc global IEventSubscription_PutSubscriberProperty 36 wstr,sptr #comfunc global IEventSubscription_RemoveSubscriberProperty 37 wstr #comfunc global IEventSubscription_GetSubscriberPropertyCollection 38 sptr #comfunc global IEventSubscription_get_InterfaceID 39 sptr #comfunc global IEventSubscription_put_InterfaceID 40 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。