ホーム › Devices.WebServicesOnDevices › IWSDDeviceHost
IWSDDeviceHost
COMメソッド 12
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT Init(LPWSTR pszLocalId, IWSDXMLContext* pContext, IWSDAddress** ppHostAddresses, DWORD dwHostAddressCount)
| pszLocalId | LPWSTR | in | デバイスホストを一意に識別するローカル ID を指定する。 |
| pContext | IWSDXMLContext* | inoptional | XML 名前空間/型を保持する IWSDXMLContext を指定する。NULL 可。 |
| ppHostAddresses | IWSDAddress** | inoptional | ホストが待ち受けるアドレス IWSDAddress の配列を指定する。 |
| dwHostAddressCount | DWORD | inoptional | ppHostAddresses 配列の要素数を指定する。 |
vtbl 4 HRESULT Start(ULONGLONG ullInstanceId, WSD_URI_LIST* pScopeList, IWSDDeviceHostNotify* pNotificationSink)
| ullInstanceId | ULONGLONG | in | デバイスホストのインスタンス識別子を指定する。 |
| pScopeList | WSD_URI_LIST* | in | デバイスが属するスコープ URI リストを指定する。NULL 可。 |
| pNotificationSink | IWSDDeviceHostNotify* | inoptional | サービス要求の通知を受け取る IWSDDeviceHostNotify を指定する。 |
vtbl 5 HRESULT Stop()
vtbl 6 HRESULT Terminate()
vtbl 7 HRESULT RegisterPortType(WSD_PORT_TYPE* pPortType)
| pPortType | WSD_PORT_TYPE* | in | ホストに登録するポート型(操作の集合)を記述する構造体を指定する。 |
vtbl 8 HRESULT SetMetadata(WSD_THIS_MODEL_METADATA* pThisModelMetadata, WSD_THIS_DEVICE_METADATA* pThisDeviceMetadata, WSD_HOST_METADATA* pHostMetadata, WSD_METADATA_SECTION_LIST* pCustomMetadata)
| pThisModelMetadata | WSD_THIS_MODEL_METADATA* | in | メーカー/モデル情報の ThisModel メタデータを指定する。NULL 可。 |
| pThisDeviceMetadata | WSD_THIS_DEVICE_METADATA* | in | 個体識別情報の ThisDevice メタデータを指定する。NULL 可。 |
| pHostMetadata | WSD_HOST_METADATA* | inoptional | ホストおよびホスト配下サービスのメタデータを指定する。NULL 可。 |
| pCustomMetadata | WSD_METADATA_SECTION_LIST* | inoptional | 追加のカスタムメタデータセクション一覧を指定する。NULL 可。 |
| pszServiceId | LPWSTR | in | 登録するサービスの識別子を指定する。 |
| pService | IUnknown* | in | サービス実装を提供する IUnknown オブジェクトを指定する。 |
| pszServiceId | LPWSTR | in | 登録解除(廃止)するサービスの識別子を指定する。 |
vtbl 11 HRESULT AddDynamicService(LPWSTR pszServiceId, LPWSTR pszEndpointAddress, WSD_PORT_TYPE* pPortType, WSDXML_NAME* pPortName, WSDXML_ELEMENT* pAny, IUnknown* pService)
| pszServiceId | LPWSTR | in | 追加する動的サービスの識別子を指定する。 |
| pszEndpointAddress | LPWSTR | inoptional | サービスのエンドポイントアドレスを指定する。 |
| pPortType | WSD_PORT_TYPE* | inoptional | サービスのポート型を記述する構造体を指定する。 |
| pPortName | WSDXML_NAME* | inoptional | ポートに対応する名前 WSDXML_NAME を指定する。NULL 可。 |
| pAny | WSDXML_ELEMENT* | inoptional | サービスホスト情報に追加するカスタム XML 要素を指定する。NULL 可。 |
| pService | IUnknown* | inoptional | サービス実装を提供する IUnknown オブジェクトを指定する。 |
| pszServiceId | LPWSTR | in | 削除する動的サービスの識別子を指定する。 |
| pszServiceId | LPWSTR | in | 探索可否を変更する対象サービスの識別子を指定する。 |
| fDiscoverable | BOOL | in | サービスを探索可能にするかどうかを示す真偽値である。 |
vtbl 14 HRESULT SignalEvent(LPWSTR pszServiceId, void* pBody, WSD_OPERATION* pOperation)
| pszServiceId | LPWSTR | in | イベントを発行するサービスの識別子を指定する。 |
| pBody | void* | inoptional | イベントメッセージ本体データへのポインタである。 |
| pOperation | WSD_OPERATION* | in | 発行するイベント操作を記述する WSD_OPERATION を指定する。 |
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IWSDDeviceHost "{917FE891-3D13-4138-9809-934C8ABEB12C}" #usecom global IWSDDeviceHost IID_IWSDDeviceHost "{}" #comfunc global IWSDDeviceHost_Init 3 wstr,sptr,sptr,int #comfunc global IWSDDeviceHost_Start 4 int64,var,sptr #comfunc global IWSDDeviceHost_Stop 5 #comfunc global IWSDDeviceHost_Terminate 6 #comfunc global IWSDDeviceHost_RegisterPortType 7 var #comfunc global IWSDDeviceHost_SetMetadata 8 var,var,var,var #comfunc global IWSDDeviceHost_RegisterService 9 wstr,sptr #comfunc global IWSDDeviceHost_RetireService 10 wstr #comfunc global IWSDDeviceHost_AddDynamicService 11 wstr,wstr,var,var,var,sptr #comfunc global IWSDDeviceHost_RemoveDynamicService 12 wstr #comfunc global IWSDDeviceHost_SetServiceDiscoverable 13 wstr,int #comfunc global IWSDDeviceHost_SignalEvent 14 wstr,sptr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IWSDDeviceHost "{917FE891-3D13-4138-9809-934C8ABEB12C}" #usecom global IWSDDeviceHost IID_IWSDDeviceHost "{}" #comfunc global IWSDDeviceHost_Init 3 wstr,sptr,sptr,int #comfunc global IWSDDeviceHost_Start 4 int64,sptr,sptr #comfunc global IWSDDeviceHost_Stop 5 #comfunc global IWSDDeviceHost_Terminate 6 #comfunc global IWSDDeviceHost_RegisterPortType 7 sptr #comfunc global IWSDDeviceHost_SetMetadata 8 sptr,sptr,sptr,sptr #comfunc global IWSDDeviceHost_RegisterService 9 wstr,sptr #comfunc global IWSDDeviceHost_RetireService 10 wstr #comfunc global IWSDDeviceHost_AddDynamicService 11 wstr,wstr,sptr,sptr,sptr,sptr #comfunc global IWSDDeviceHost_RemoveDynamicService 12 wstr #comfunc global IWSDDeviceHost_SetServiceDiscoverable 13 wstr,int #comfunc global IWSDDeviceHost_SignalEvent 14 wstr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。