Win32 API 日本語リファレンス
ホームDevices.WebServicesOnDevices › IWSDServiceProxy

IWSDServiceProxy

COM
IIDd4c7fb9c-03ab-4175-9d67-094fafebf487継承元IWSDMetadataExchange自前メソッド開始 vtbl4

公式ドキュメント

クライアントアプリケーションおよびミドルウェア向けに、リモートの WSD サービスを表します。

解説(Remarks)

サービスプロキシオブジェクトは複数のエンドポイント上に存在する場合があります。エンドポイントは URL よりも完全な情報を表します (追加の有用なデータを含みます)。たとえば、あるエンドポイントは IPv4 アドレス上で HTTP をサポートし、別のエンドポイントは IPv6 アドレス上で HTTPS をサポートすることがあります。同一のサービスが両方のエンドポイント上に存在するため、サービスは基盤となるエンドポイントプロキシオブジェクトを持ち、各エンドポイントプロキシがサービスの利用可能な単一のエンドポイントに対応していることが重要です。エンドポイントプロキシは、一方向メッセージや双方向メッセージの送信など、サービスへの単純なメッセージング要求を処理します。

IWSDServiceProxy オブジェクトは、サービスメタデータの取得、サービスプロキシを介したサービスへのメッセージ送信、サービス上のイベントへのサブスクライブ、および型固有のセマンティクスを提供するプロキシへのバインドに使用されます。

メソッド 7

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

vtbl 4 HRESULT BeginGetMetadata(IWSDAsyncResult** ppResult)

リモートサービスとの非同期メタデータ交換要求を開始します。

ppResultIWSDAsyncResult**out結果のポーリング、コールバックオブジェクトの登録、または応答受信時にシグナル通知されるイベントの構成に使用する IWSDAsyncResult インターフェイス。

戻り値

戻り値には次のものが含まれます (ただしこれらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_POINTER
ppResultNULL です。
E_ABORT
メソッドを完了できませんでした。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。
E_FAIL
メソッドは失敗しました。

解説(Remarks)

非同期操作を完了してメタデータを取得するには、IWSDServiceProxy::EndGetMetadata を呼び出します。

vtbl 5 HRESULT EndGetMetadata(IWSDAsyncResult* pResult, WSD_METADATA_SECTION_LIST** ppMetadata)

非同期メタデータ交換要求を完了し、応答からサービスメタデータを取得します。

pResultIWSDAsyncResult*in要求の結果を表す IWSDAsyncResult インターフェイス。使用後はこのオブジェクトを解放してください。
ppMetadataWSD_METADATA_SECTION_LIST**out要求されたメタデータ。詳細については、WSD_METADATA_SECTION_LIST を参照してください。このオブジェクトは解放しないでください。

戻り値

戻り値には次のものが含まれます (ただしこれらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。

解説(Remarks)

EndGetMetadata は、メタデータ取得操作が完了するまでブロックする場合があります。

vtbl 6 HRESULT GetServiceMetadata(WSD_SERVICE_METADATA** ppServiceMetadata)

IWSDServiceProxy オブジェクトのメタデータを取得します。

ppServiceMetadataWSD_SERVICE_METADATA**outサービスメタデータを指定する WSD_SERVICE_METADATA 構造体への参照。このオブジェクトは解放しないでください。

戻り値

戻り値には次のものが含まれます (ただしこれらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_POINTER
ppServiceMetadataNULL です。

解説(Remarks)

このメタデータは、IWSDDeviceProxy::GetHostMetadata が生成するメタデータの一部としても利用できます。

vtbl 7 HRESULT SubscribeToOperation(WSD_OPERATION* pOperation, IUnknown* pUnknown, WSDXML_ELEMENT* pAny, WSDXML_ELEMENT** ppAny)

通知イベントまたは要請/応答イベントにサブスクライブします。

pOperationWSD_OPERATION*inサブスクライブする操作を指定する WSD_OPERATION 構造体への参照。
pUnknownIUnknown*inクライアントのイベントコールバック関数に渡される匿名データ。このデータは、クライアントオブジェクトをサブスクリプションに関連付けるために使用されます。
pAnyWSDXML_ELEMENT*inサブスクリプション要求の本文に追加する拡張データ。IWSDXML* インターフェイスを使用してデータを構築できます。詳細については、WSDXML_ELEMENT を参照してください。
ppAnyWSDXML_ELEMENT**outoptionalリモートデバイスがサブスクリプション応答に追加できる拡張データ。これにより、サービスはイベントサブスクリプションの追加のカスタマイズを提供できます。使用後は WSDFreeLinkedMemory を呼び出してメモリを解放してください。詳細については、WSDXML_ELEMENT を参照してください。このオブジェクトは解放しないでください。

戻り値

戻り値には次のものが含まれます (ただしこれらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
プロキシは、pOperation で指定された操作に既にサブスクライブしています。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。
E_FAIL
メソッドは失敗しました。

解説(Remarks)

このメソッドは通常、生成されたプロキシコードからのみ呼び出されます。

vtbl 8 HRESULT UnsubscribeToOperation(WSD_OPERATION* pOperation)

通知イベントまたは要請/応答イベントへのサブスクリプションを解除します。

pOperationWSD_OPERATION*inサブスクライブ済みの操作を指定する WSD_OPERATION 構造体への参照。

戻り値

戻り値には次のものが含まれます (ただしこれらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
プロキシは、pOperation で指定された通知にサブスクライブしていません。
E_POINTER
pOperationNULL です。
vtbl 9 HRESULT SetEventingStatusCallback(IWSDEventingStatus* pStatus)

イベンティング状態コールバックを設定またはクリアします。

pStatusIWSDEventingStatus*inoptionalイベントサブスクリプションの状態変化をクライアントに通知する IWSDEventingStatus インターフェイス。NULL の場合、既存のイベンティング状態コールバックがクリアされます。

戻り値

このメソッドは次の値のいずれかを返すことがあります。

戻り値には次のものが含まれます (ただしこれらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
vtbl 10 HRESULT GetEndpointProxy(IWSDEndpointProxy** ppProxy)

デバイスのエンドポイントプロキシを取得します。

ppProxyIWSDEndpointProxy**outIWSDEndpointProxy インターフェイスへのポインター。

戻り値

戻り値には次のものが含まれます (ただしこれらに限定されません)。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_POINTER
ppProxyNULL です。

解説(Remarks)

エンドポイントプロキシは、直前の要求に対して障害 (fault) を受信した場合に提供されます。クライアントは IWSDEndpointProxy::GetFaultInfo を呼び出してエラーの内容を判別できます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IWSDServiceProxy "{D4C7FB9C-03AB-4175-9D67-094FAFEBF487}"
#usecom global IWSDServiceProxy IID_IWSDServiceProxy "{}"
#comfunc global IWSDServiceProxy_BeginGetMetadata           4 sptr
#comfunc global IWSDServiceProxy_EndGetMetadata             5 sptr,var
#comfunc global IWSDServiceProxy_GetServiceMetadata         6 var
#comfunc global IWSDServiceProxy_SubscribeToOperation       7 var,sptr,var,var
#comfunc global IWSDServiceProxy_UnsubscribeToOperation     8 var
#comfunc global IWSDServiceProxy_SetEventingStatusCallback  9 sptr
#comfunc global IWSDServiceProxy_GetEndpointProxy           10 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。