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

IWSDDeviceProxy

COM
IIDeee0c031-c578-4c0e-9a3b-973c35f409db継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

クライアントアプリケーションおよびミドルウェアに対して、リモートの Devices Profile for Web Services (DPWS) デバイスを表します。

解説(Remarks)

このインターフェイスは、リモートデバイスのクライアント側表現です。このプロキシは、デバイスのメタデータ (WSD_THIS_DEVICE_METADATA および WSD_THIS_MODEL_METADATA) への基本的なアクセス手段に加え、サービスプロキシオブジェクトを作成するメソッドを提供します。サービスプロキシオブジェクトは、デバイス上でホストされるサービスに対応します。たとえば、テレビはデバイスであり、テレビのチューナー部分は、アクセス可能で不可分な機能の集合を持つ、デバイス上でホストされるサービスです。

IWSDDeviceProxy オブジェクトは、WSD 固有のデバイスセマンティクスを公開します。

クライアントアプリケーションまたはミドルウェアアプリケーションで IWSDDeviceProxy を使用するには、次の手順を実行します。

  1. WSDCreateDeviceProxy を呼び出します。
  2. デバイスプロキシオブジェクトの 4 つのメタデータメソッドのいずれかを呼び出します。
  3. GetServiceProxyById または GetServiceProxyByType を呼び出して、IWSDServiceProxy オブジェクトを取得します。

メソッド 10

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

vtbl 3 HRESULT Init(LPWSTR pszDeviceId, IWSDAddress* pDeviceAddress, LPWSTR pszLocalId, IWSDXMLContext* pContext, IWSDDeviceProxy* pSponsor)

デバイスプロキシを初期化します。必要に応じて、既に初期化済みのスポンサーとなるデバイスプロキシとセッションを共有します。

pszDeviceIdLPWSTRinデバイスの論理アドレス (ID)。
pDeviceAddressIWSDAddress*inデバイスの構成データを格納する IWSDAddress オブジェクトへの参照。
pszLocalIdLPWSTRinクライアントの論理アドレス。論理アドレスの形式は urn:uuid:{guid} です。サーバーがクライアントへの接続を開始する必要がある場合に使用されます。
pContextIWSDXMLContext*inoptional

カスタムのメッセージ型または名前空間を定義する IWSDXMLContext オブジェクトへの参照。

NULL の場合、組み込みのメッセージ型および名前空間を表す既定のコンテキストが使用されます。

pSponsorIWSDDeviceProxy*inoptionalセッションおよび下位レイヤーを共有する、省略可能なデバイスを表す IWSDDeviceProxy オブジェクトへの参照。

戻り値

戻り値には次のものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
pszDeviceIdNULL であるか、pszLocalIdNULL であるか、またはいずれかの識別子文字列の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えています。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

このメソッドは WSDCreateDeviceProxy から呼び出されるため、通常はクライアントコードから直接呼び出す必要はありません。

vtbl 4 HRESULT BeginGetMetadata(IWSDAsyncResult** ppResult)

メタデータの非同期要求を送信します。

ppResultIWSDAsyncResult**out操作が完了したかどうかを判定するために使用できる IWSDAsyncResult オブジェクトを返します。

戻り値

このメソッドは次のいずれかの値を返します。

戻り値には次のものが含まれますが、これらに限定されません。

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

解説(Remarks)

BeginGetMetadata は、デバイスプロキシに対してホストへのメタデータ要求の送信を強制します。EndGetMetadata が呼び出されると、最新のメタデータ取得結果に GetAllMetadataGetHostMetadataGetThisDeviceMetadataGetThisModelMetadata の各メソッドからアクセスできるようになります。

vtbl 5 HRESULT EndGetMetadata(IWSDAsyncResult* pResult)

メタデータの非同期要求を終了します。

pResultIWSDAsyncResult*inBeginGetMetadata によって返された IWSDAsyncResult オブジェクト。

戻り値

戻り値には次のものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
pResultNULL です。
E_ABORT
メソッドを完了できませんでした。
E_FAIL
メソッドが失敗しました。メタデータが返されなかったか、無効であったか、またはフォールトが生成されました。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。

解説(Remarks)

EndGetMetadata は、BeginGetMetadata によって返された IWSDAsyncResult オブジェクトが操作の完了を示した後にのみ呼び出す必要があります。EndGetMetadata が呼び出されると、最新のメタデータ取得結果に GetAllMetadataGetHostMetadataGetThisDeviceMetadataGetThisModelMetadata の各メソッドからアクセスできるようになります。

vtbl 6 HRESULT GetHostMetadata(WSD_HOST_METADATA** ppHostMetadata)

デバイスの機能およびデバイスがホストするサービスを記述する、デバイスのクラス固有メタデータを取得します。

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

戻り値

このメソッドは次のいずれかの値を返します。

戻り値には次のものが含まれますが、これらに限定されません。

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

解説(Remarks)

GetHostMetadata は、デバイスプロキシにデバイスからのメタデータ取得を行わせません。代わりに、GetHostMetadataBeginGetMetadata および EndGetMetadata の最後の呼び出しで取得されたメタデータを返します。これらのメソッドがいずれも呼び出されていない場合、GetHostMetadataIWSDDeviceProxy オブジェクトの初期化時に取得されたメタデータを返します。

成功した場合、ppMetadata のメモリは、BeginGetMetadata または EndGetMetadata が呼び出されるまで、あるいは IWSDDeviceProxy オブジェクトが解放されるまで有効です。

vtbl 7 HRESULT GetThisModelMetadata(WSD_THIS_MODEL_METADATA** ppManufacturerMetadata)

デバイスのモデル固有メタデータを取得します。

ppManufacturerMetadataWSD_THIS_MODEL_METADATA**out製造元およびモデル固有のメタデータを指定する WSD_THIS_MODEL_METADATA 構造体への参照。このオブジェクトを解放しないでください。

戻り値

このメソッドは次のいずれかの値を返します。

戻り値には次のものが含まれますが、これらに限定されません。

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

解説(Remarks)

GetThisModelMetadata は、デバイスプロキシにデバイスからのメタデータ取得を行わせません。代わりに、GetThisModelMetadataBeginGetMetadata および EndGetMetadata の最後の呼び出しで取得されたメタデータを返します。これらのメソッドがいずれも呼び出されていない場合、GetThisModelMetadataIWSDDeviceProxy オブジェクトの初期化時に取得されたメタデータを返します。

成功した場合、ppMetadata のメモリは、BeginGetMetadata または EndGetMetadata が呼び出されるまで、あるいは IWSDDeviceProxy オブジェクトが解放されるまで有効です。

vtbl 8 HRESULT GetThisDeviceMetadata(WSD_THIS_DEVICE_METADATA** ppThisDeviceMetadata)

このデバイスのデバイス固有メタデータを取得します。

ppThisDeviceMetadataWSD_THIS_DEVICE_METADATA**outこのデバイスのデバイス固有メタデータを指定する WSD_THIS_DEVICE_METADATA 構造体への参照。 このオブジェクトを解放しないでください。

戻り値

このメソッドは次のいずれかの値を返します。

戻り値には次のものが含まれますが、これらに限定されません。

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

解説(Remarks)

GetThisDeviceMetadata は、デバイスプロキシにデバイスからのメタデータ取得を行わせません。代わりに、GetThisDeviceMetadataBeginGetMetadata および EndGetMetadata の最後の呼び出しで取得されたメタデータを返します。これらのメソッドがいずれも呼び出されていない場合、GetThisDeviceMetadataIWSDDeviceProxy オブジェクトの初期化時に取得されたメタデータを返します。

成功した場合、ppMetadata のメモリは、BeginGetMetadata または EndGetMetadata が呼び出されるまで、あるいは IWSDDeviceProxy オブジェクトが解放されるまで有効です。

vtbl 9 HRESULT GetAllMetadata(WSD_METADATA_SECTION_LIST** ppMetadata)

このデバイスのすべてのメタデータを取得します。

ppMetadataWSD_METADATA_SECTION_LIST**outデバイスに関連するすべてのメタデータを指定する WSD_METADATA_SECTION_LIST 構造体への参照。 このオブジェクトを解放しないでください。

戻り値

このメソッドは次のいずれかの値を返します。

戻り値には次のものが含まれますが、これらに限定されません。

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

解説(Remarks)

このメソッドは、拡張メタデータにアクセスできるようにするために提供されています。製造元、サービスホスト、およびデバイス固有のメタデータは、それぞれの目的専用に用意されたメソッドを使用して取得するのが最適です。

GetAllMetadata は、デバイスプロキシにデバイスからのメタデータ取得を行わせません。代わりに、GetAllMetadataBeginGetMetadata および EndGetMetadata の最後の呼び出しで取得されたメタデータを返します。これらのメソッドがいずれも呼び出されていない場合、GetAllMetadataIWSDDeviceProxy オブジェクトの初期化時に取得されたメタデータを返します。

成功した場合、ppMetadata のメモリは、BeginGetMetadata または EndGetMetadata が呼び出されるまで、あるいは IWSDDeviceProxy オブジェクトが解放されるまで有効です。

vtbl 10 HRESULT GetServiceProxyById(LPWSTR pszServiceId, IWSDServiceProxy** ppServiceProxy)

サービス ID を指定して、汎用の IWSDServiceProxy サービスプロキシを取得します。

pszServiceIdLPWSTRinサービス ID。
ppServiceProxyIWSDServiceProxy**out指定されたサービスプロキシに対応する IWSDServiceProxy オブジェクトへのポインター。

戻り値

戻り値には次のものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_POINTER
ppServiceProxyNULL です。
E_INVALIDARG
pszServiceId の文字数が WSD_MAX_TEXT_LENGTH (8192) を超えているか、または pszServiceId で指定されたサービスに関連付けられたメタデータが存在しません。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。
E_FAIL
サービスプロキシに関連付けられたエンドポイントが存在しません。
vtbl 11 HRESULT GetServiceProxyByType(WSDXML_NAME* pType, IWSDServiceProxy** ppServiceProxy)

ポート型名を指定して、デバイスが公開するサービスの汎用 IWSDServiceProxy プロキシを取得します。

pTypeWSDXML_NAME*inポート型名を指定する WSDXML_NAME 構造体への参照。
ppServiceProxyIWSDServiceProxy**out指定されたサービスに関連付けられた IWSDServiceProxy オブジェクトへのポインター。

戻り値

戻り値には次のものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_POINTER
pType または ppServiceProxyNULL です。
E_INVALIDARG
pType で指定されたサービスに関連付けられたメタデータが存在しません。
E_OUTOFMEMORY
操作を完了するためのメモリが不足しています。
E_FAIL
サービスプロキシに関連付けられたエンドポイントが存在しません。

解説(Remarks)

デバイスが指定された型のサービスを複数ホストしている場合、そのうちいずれか 1 つのサービスのプロキシが返される可能性があります。そのような場合、呼び出し元は特定のサービスプロキシが返されることを前提にしないでください。

vtbl 12 HRESULT GetEndpointProxy(IWSDEndpointProxy** ppProxy)

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

ppProxyIWSDEndpointProxy**outこのデバイスのデバイスサービスメッセージングプロキシを実装する IWSDEndpointProxy インターフェイス。

戻り値

このメソッドは次のいずれかの値を返します。

戻り値には次のものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは正常に完了しました。
E_POINTER
ppProxyNULL です。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IWSDDeviceProxy "{EEE0C031-C578-4C0E-9A3B-973C35F409DB}"
#usecom global IWSDDeviceProxy IID_IWSDDeviceProxy "{}"
#comfunc global IWSDDeviceProxy_Init                   3 wstr,sptr,wstr,sptr,sptr
#comfunc global IWSDDeviceProxy_BeginGetMetadata       4 sptr
#comfunc global IWSDDeviceProxy_EndGetMetadata         5 sptr
#comfunc global IWSDDeviceProxy_GetHostMetadata        6 var
#comfunc global IWSDDeviceProxy_GetThisModelMetadata   7 var
#comfunc global IWSDDeviceProxy_GetThisDeviceMetadata  8 var
#comfunc global IWSDDeviceProxy_GetAllMetadata         9 var
#comfunc global IWSDDeviceProxy_GetServiceProxyById    10 wstr,sptr
#comfunc global IWSDDeviceProxy_GetServiceProxyByType  11 var,sptr
#comfunc global IWSDDeviceProxy_GetEndpointProxy       12 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。