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

IMachineGlobalObjectTable

COM
IID26d709ac-f70b-4421-a96f-d2878fafb00d継承元IUnknown自前メソッド開始 vtbl3

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT RegisterObject(GUID* clsid, LPWSTR identifier, IUnknown* object, MachineGlobalObjectTableRegistrationToken* token)
clsidGUID*in登録するオブジェクトのクラスを識別する CLSID を表す GUID へのポインタである。
identifierLPWSTRin同一 CLSID 内でオブジェクトを一意に識別する文字列を指定する。
objectIUnknown*inテーブルに登録するオブジェクトの IUnknown へのポインタである。
tokenMachineGlobalObjectTableRegistrationToken*out登録を識別する登録トークンを受け取るポインタである。後で取り消しに用いる。
vtbl 4 HRESULT GetObject(GUID* clsid, LPWSTR identifier, GUID* riid, void** ppv)
clsidGUID*in取得するオブジェクトのクラスを識別する CLSID を表す GUID へのポインタである。
identifierLPWSTRin取得するオブジェクトを識別する文字列を指定する。
riidGUID*in取得するインターフェイスの GUID(インターフェイス識別子)へのポインタである。
ppvvoid**out要求したインターフェイスへのポインタを受け取る void ポインタへのポインタである。
vtbl 5 HRESULT RevokeObject(MachineGlobalObjectTableRegistrationToken token)
tokenMachineGlobalObjectTableRegistrationTokeninRegisterObject で取得した登録トークンを指定し、オブジェクトの登録を取り消す。

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 指定が可能。