IEventSystem
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
イベントデータストアへのアクセスを提供します。
メソッド 6
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
イベントデータストアからサブスクリプションオブジェクトまたはイベントオブジェクトのコレクションを取得します。(IEventSystem.Query)
| progID | LPWSTR | in | クエリ対象のオブジェクトクラスの ProgID。有効なイベントオブジェクトクラス識別子である必要があります。このパラメーターには次のいずれかの値を指定できます。
|
| queryCriteria | LPWSTR | in | クエリ条件。このパラメーターに有効な式を作成する方法の詳細については、後述の「解説」セクションを参照してください。 |
| errorIndex | INT* | out | queryCriteria パラメーター内のエラーの位置を、オフセットで表したもの。 |
| ppInterface | IUnknown** | out | クエリの結果として取得されるオブジェクトへのポインターのアドレス。このパラメーターに NULL を指定することはできません。progID パラメーターで指定されたオブジェクトに応じて、これは次のいずれかのインターフェースへのポインターになります。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_POINTER、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL に加えて、次の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| クエリ文字列を評価しようとした際に構文エラーが発生しました。 | |
| クエリ文字列で無効なフィールド名が使用されました。 |
解説(Remarks)
ppInterface パラメーターを通じて割り当てられたメモリの解放は、呼び出し元の責任です。
queryCriteria パラメーターで指定するクエリ条件には、すべてのサブスクリプションオブジェクトを要求することを示す "ALL"、または、サブスクリプションオブジェクトがクエリ結果に含まれるために満たすべき 1 つ以上の条件を表すブール式を指定できます。有効な式は次の形式です。
[NOT] propertynamerelationalOperatorvalue。有効な関係演算子は次のとおりです。
==、=、!=、<>、~=。有効な値は "string"、'string'、{GUID}、TRUE、FALSE、NULL です。
個々のブール式は AND または OR で結合できます。式を括弧で入れ子にすることで、特定の評価順序を強制することもできます。
有効なクエリ条件の例を次に示します。
"EventClassID == {F89859D1-6565-11D1-88C8-0080C7D771BF}"
"EventClassID == {F89859D1-6565-11D1-88C8-0080C7D771BF} AND MethodName = 'StockPriceChange'"
イベントシステム内でイベントオブジェクトまたはサブスクリプションオブジェクトを作成または変更します。
| ProgID | LPWSTR | in | 追加するイベントオブジェクトの ProgID。有効なイベントオブジェクトクラス識別子である必要があります。指定可能な値は PROGID_EventSubscription と PROGID_EventClass です。 |
| pInterface | IUnknown* | in | 追加するオブジェクトへのポインター。ProgID パラメーターで指定されたオブジェクトに応じて、これは IEventSubscription インターフェースまたは IEventClass インターフェースへのポインターになります。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL に加えて、次の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| ユーザー単位のサブスクリプションの所有者 SID が存在しません。 |
イベントデータストアから 1 つ以上のサブスクリプションオブジェクトまたはイベントオブジェクトを削除します。(IEventSystem.Remove)
| progID | LPWSTR | in | 削除するオブジェクトクラスの ProgID。有効なイベントオブジェクトクラス識別子である必要があります。このパラメーターには次のいずれかの値を指定できます。
|
| queryCriteria | LPWSTR | in | クエリ条件。このパラメーターに有効な式を作成する方法の詳細については、後述の「解説」セクションを参照してください。 |
| errorIndex | INT* | out | queryCriteria パラメーター内のエラーの位置を、オフセットで表したもの。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL に加えて、次の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| クエリ文字列を評価しようとした際に構文エラーが発生しました。 | |
| クエリ文字列で無効なフィールド名が使用されました。 | |
| 要求されたオブジェクトのすべてを削除できたわけではありません。 |
解説(Remarks)
queryCriteria パラメーターで指定するクエリ条件には、すべてのサブスクリプションオブジェクトを要求することを示す "ALL"、または、サブスクリプションオブジェクトがクエリ結果に含まれるために満たすべき 1 つ以上の条件を表すブール式を指定できます。有効な式は次の形式です。
[NOT] propertynamerelationalOperatorvalue。有効な関係演算子は次のとおりです。
==、=、!=、<>、~=。有効な値は "string"、'string'、{GUID}、TRUE、FALSE、NULL です。
個々のブール式は AND または OR で結合できます。式を括弧で入れ子にすることで、特定の評価順序を強制することもできます。
有効なクエリ条件の例を次に示します。
"EventClassID == {F89859D1-6565-11D1-88C8-0080C7D771BF}"
"EventClassID == {F89859D1-6565-11D1-88C8-0080C7D771BF} AND MethodName = 'StockPriceChange'"
イベントストアへの変更を呼び出し元に通知するイベントクラスオブジェクトの CLSID を取得します。
| pbstrEventClassID | LPWSTR* | out | イベントオブジェクト変更通知のイベントクラス ID を文字列として受け取る。 |
解説(Remarks)
サブスクリプションは EventObjectChangeEventClassID プロパティを使用して、サブスクライバーやイベントが変更されたとき、またはそれらがイベントストアに追加もしくは削除されたときに通知するイベントクラスオブジェクトへのポインターを取得できます。これらのイベントのサブスクライバーは、IEventObjectChange インターフェースを実装する必要があります。
イベントデータストアからサブスクリプションオブジェクトまたはイベントオブジェクトのコレクションを取得します。(IEventSystem.QueryS)
| progID | LPWSTR | in | クエリ対象のオブジェクトクラスの ProgID。有効なイベントオブジェクトクラス識別子である必要があります。このパラメーターには次のいずれかの値を指定できます。
|
| queryCriteria | LPWSTR | in | クエリ条件。このパラメーターに有効な式を作成する方法の詳細については、後述の「解説」セクションを参照してください。 |
| ppInterface | IUnknown** | out | クエリの結果として取得されるオブジェクトへのポインターのアドレス。このパラメーターに NULL を指定することはできません。progID パラメーターで指定されたオブジェクトに応じて、これは次のいずれかのインターフェースへのポインターになります。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_POINTER、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL に加えて、次の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| クエリ文字列を評価しようとした際に構文エラーが発生しました。 | |
| クエリ文字列で無効なフィールド名が使用されました。 |
解説(Remarks)
ppInterface パラメーターを通じて割り当てられたメモリの解放は、呼び出し元の責任です。
queryCriteria パラメーターで指定するクエリ条件には、すべてのサブスクリプションオブジェクトを要求することを示す "ALL"、または、サブスクリプションオブジェクトがクエリ結果に含まれるために満たすべき 1 つ以上の条件を表すブール式を指定できます。有効な式は次の形式です。
[NOT] propertynamerelationalOperatorvalue。有効な関係演算子は次のとおりです。
==、=、!=、<>、~=。有効な値は "string"、'string'、{GUID}、TRUE、FALSE、NULL です。
個々のブール式は AND または OR で結合できます。式を括弧で入れ子にすることで、特定の評価順序を強制することもできます。
有効なクエリ条件の例を次に示します。
"EventClassID == {F89859D1-6565-11D1-88C8-0080C7D771BF}"
"EventClassID == {F89859D1-6565-11D1-88C8-0080C7D771BF} AND MethodName = 'StockPriceChange'"
イベントデータストアから 1 つ以上のサブスクリプションオブジェクトまたはイベントオブジェクトを削除します。(IEventSystem.RemoveS)
| progID | LPWSTR | in | 削除するオブジェクトクラスの ProgID。有効なイベントオブジェクトクラス識別子である必要があります。このパラメーターには次のいずれかの値を指定できます。
|
| queryCriteria | LPWSTR | in | クエリ条件。このパラメーターに有効な式を作成する方法の詳細については、後述の「解説」セクションを参照してください。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL に加えて、次の値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは正常に完了しました。 | |
| クエリ文字列を評価しようとした際に構文エラーが発生しました。 | |
| クエリ文字列で無効なフィールド名が使用されました。 | |
| 要求されたオブジェクトのすべてを削除できたわけではありません。 |
解説(Remarks)
queryCriteria パラメーターで指定するクエリ条件には、すべてのサブスクリプションオブジェクトを要求することを示す "ALL"、または、サブスクリプションオブジェクトがクエリ結果に含まれるために満たすべき 1 つ以上の条件を表すブール式を指定できます。有効な式は次の形式です。
[NOT] propertynamerelationalOperatorvalue。有効な関係演算子は次のとおりです。
==、=、!=、<>、~=。有効な値は "string"、'string'、{GUID}、TRUE、FALSE、NULL です。
個々のブール式は AND または OR で結合できます。式を括弧で入れ子にすることで、特定の評価順序を強制することもできます。
有効なクエリ条件の例を次に示します。
"EventClassID == {F89859D1-6565-11D1-88C8-0080C7D771BF}"
"EventClassID == {F89859D1-6565-11D1-88C8-0080C7D771BF} AND MethodName = 'StockPriceChange'"
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IEventSystem "{4E14FB9F-2E22-11D1-9964-00C04FBBB345}" #usecom global IEventSystem IID_IEventSystem "{}" #comfunc global IEventSystem_Query 7 wstr,wstr,var,sptr #comfunc global IEventSystem_Store 8 wstr,sptr #comfunc global IEventSystem_Remove 9 wstr,wstr,var #comfunc global IEventSystem_get_EventObjectChangeEventClassID 10 var #comfunc global IEventSystem_QueryS 11 wstr,wstr,sptr #comfunc global IEventSystem_RemoveS 12 wstr,wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IEventSystem "{4E14FB9F-2E22-11D1-9964-00C04FBBB345}" #usecom global IEventSystem IID_IEventSystem "{}" #comfunc global IEventSystem_Query 7 wstr,wstr,sptr,sptr #comfunc global IEventSystem_Store 8 wstr,sptr #comfunc global IEventSystem_Remove 9 wstr,wstr,sptr #comfunc global IEventSystem_get_EventObjectChangeEventClassID 10 sptr #comfunc global IEventSystem_QueryS 11 wstr,wstr,sptr #comfunc global IEventSystem_RemoveS 12 wstr,wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。