ホーム › System.Com › IMachineGlobalObjectTable
IMachineGlobalObjectTable
COMメソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT RegisterObject(GUID* clsid, LPWSTR identifier, IUnknown* object, MachineGlobalObjectTableRegistrationToken* token)
| clsid | GUID* | in | 登録するオブジェクトのクラスを識別する CLSID を表す GUID へのポインタである。 |
| identifier | LPWSTR | in | 同一 CLSID 内でオブジェクトを一意に識別する文字列を指定する。 |
| object | IUnknown* | in | テーブルに登録するオブジェクトの IUnknown へのポインタである。 |
| token | MachineGlobalObjectTableRegistrationToken* | out | 登録を識別する登録トークンを受け取るポインタである。後で取り消しに用いる。 |
| clsid | GUID* | in | 取得するオブジェクトのクラスを識別する CLSID を表す GUID へのポインタである。 |
| identifier | LPWSTR | in | 取得するオブジェクトを識別する文字列を指定する。 |
| riid | GUID* | in | 取得するインターフェイスの GUID(インターフェイス識別子)へのポインタである。 |
| ppv | void** | out | 要求したインターフェイスへのポインタを受け取る void ポインタへのポインタである。 |
vtbl 5 HRESULT RevokeObject(MachineGlobalObjectTableRegistrationToken token)
| token | MachineGlobalObjectTableRegistrationToken | in | RegisterObject で取得した登録トークンを指定し、オブジェクトの登録を取り消す。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IMachineGlobalObjectTable "{26D709AC-F70B-4421-A96F-D2878FAFB00D}" #usecom global IMachineGlobalObjectTable IID_IMachineGlobalObjectTable "{}" #comfunc global IMachineGlobalObjectTable_RegisterObject 3 var,wstr,sptr,sptr #comfunc global IMachineGlobalObjectTable_GetObject 4 var,wstr,var,sptr #comfunc global IMachineGlobalObjectTable_RevokeObject 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMachineGlobalObjectTable "{26D709AC-F70B-4421-A96F-D2878FAFB00D}" #usecom global IMachineGlobalObjectTable IID_IMachineGlobalObjectTable "{}" #comfunc global IMachineGlobalObjectTable_RegisterObject 3 sptr,wstr,sptr,sptr #comfunc global IMachineGlobalObjectTable_GetObject 4 sptr,wstr,sptr,sptr #comfunc global IMachineGlobalObjectTable_RevokeObject 5 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。