IPortableDeviceServiceCapabilities
COM公式ドキュメント
サービスの機能(ケイパビリティ)を示す情報を取得します。
メソッド 16
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
サービスがサポートするメソッドを取得します。
| ppMethods | IPortableDevicePropVariantCollection** | out | メソッドの一覧を受け取る IPortableDevicePropVariantCollection インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
指定したフォーマットについて、サービスがサポートするメソッドを取得します。
| Format | GUID* | in | サポートされるメソッドを取得する対象のフォーマット。 |
| ppMethods | IPortableDevicePropVariantCollection** | out | メソッドの一覧を受け取る IPortableDevicePropVariantCollection インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
指定したメソッドを説明する属性を取得します。
| Method | GUID* | in | 属性を取得する対象のメソッド。 |
| ppAttributes | IPortableDeviceValues** | out | 属性の一覧を受け取る IPortableDeviceValues インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
解説(Remarks)
取得され得る属性には、WPD_METHOD_ATTRIBUTE_NAME、WPD_METHOD_ATTRIBUTE_ASSOCIATED_FORMAT、WPD_METHOD_ATTRIBUTE_ACCESS、WPD_METHOD_ATTRIBUTE_PARAMETERS の各プロパティなどがあります。
例
このメソッドの使用例については、Retrieving Supported Service Methods を参照してください。
指定したメソッドパラメーターを説明する属性を取得します。
| Method | GUID* | in | 属性を取得する対象のパラメーターを含むメソッド。 |
| Parameter | PROPERTYKEY* | in | 属性を取得する対象のパラメーター。 |
| ppAttributes | IPortableDeviceValues** | out | 属性の一覧を受け取る IPortableDeviceValues インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
解説(Remarks)
取得され得る属性には、WPD_PARAMETER_ATTRIBUTE_ORDER、WPD_PARAMETER_ATTRIBUTE_USAGE、WPD_PARAMETER_ATTRIBUTE_NAME、WPD_PARAMETER_ATTRIBUTE_VARTYPE の各プロパティなどがあります。
例
このメソッドの使用例については、Retrieving Supported Service Methods を参照してください。
サービスがサポートするフォーマットを取得します。
| ppFormats | IPortableDevicePropVariantCollection** | out | フォーマットの一覧を受け取る IPortableDevicePropVariantCollection インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
フォーマットの属性を取得します。
| Format | GUID* | in | 属性を取得する対象のフォーマット。 |
| ppAttributes | IPortableDeviceValues** | out | 属性の一覧を受け取る IPortableDeviceValues インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
解説(Remarks)
よく取得される属性の例として WPD_FORMAT_ATTRIBUTE_NAME があります。
例
このメソッドの使用例については、Retrieving Supported Service Formats を参照してください。
指定したフォーマットについて、サービスがサポートするプロパティを取得します。
| Format | GUID* | in | プロパティを取得する対象のフォーマット。 |
| ppKeys | IPortableDeviceKeyCollection** | out | プロパティの一覧を受け取る IPortableDeviceKeyCollection インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
解説(Remarks)
取得されるプロパティのコレクションは、指定したフォーマットのオブジェクトがサポートするすべてのプロパティの上位集合(スーパーセット)です。
アプリケーションは、IPortableDeviceService::SendCommand メソッドにコマンド識別子として WPD_COMMAND_OBJECT_PROPERTIES_GET_SUPPORTED プロパティを渡して呼び出すことでも、オブジェクトのプロパティを取得できます。ただし、通常は GetSupportedFormatProperties メソッドのほうが IPortableDeviceService::SendCommand メソッドよりも高速です。
フォーマットプロパティの属性を取得します。
| Format | GUID* | in | 属性を取得する対象のプロパティを持つフォーマット。 |
| Property | PROPERTYKEY* | in | 属性を取得する対象のプロパティ。 |
| ppAttributes | IPortableDeviceValues** | out | 属性の一覧を受け取る IPortableDeviceValues インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
解説(Remarks)
Windows Portable Devices (WPD) ドライバーは、あるフォーマットのオブジェクトを同一に扱うことが多くあります。そのため、多くのプロパティは、そのフォーマットのすべてのオブジェクトで同一の属性を持ちます。このメソッドはそうした属性を取得します。
なお、このメソッドはオブジェクトのインスタンスごとに異なる属性は取得しません。
サービスがサポートするイベントを取得します。
| ppEvents | IPortableDevicePropVariantCollection** | out | イベントの一覧を受け取る IPortableDevicePropVariantCollection インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
イベントの属性を取得します。
| Event | GUID* | in | 属性を取得する対象のイベント。 |
| ppAttributes | IPortableDeviceValues** | out | 属性の一覧を受け取る IPortableDeviceValues インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
解説(Remarks)
取得され得る属性には、WPD_EVENT_ATTRIBUTE_NAME、WPD_EVENT_ATTRIBUTE_PARAMETERS、WPD_EVENT_ATTRIBUTE_OPTIONS の各プロパティなどがあります。
例
このメソッドの使用例については、Retrieving Supported Service Events を参照してください。
イベントパラメーターの属性を取得します。
| Event | GUID* | in | 属性を取得する対象のパラメーターを含むイベント。 |
| Parameter | PROPERTYKEY* | in | 属性を取得する対象のパラメーター。 |
| ppAttributes | IPortableDeviceValues** | out | 属性の一覧を受け取る IPortableDeviceValues インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
解説(Remarks)
取得され得る属性値には、WPD_PARAMETER_ATTRIBUTE_VARTYPE および WPD_PARAMETER_ATTRIBUTE_FORM の各プロパティなどがあります。
例
このメソッドの使用例については、Retrieving Supported Service Events を参照してください。
指定した継承の種類を持つサービスを取得します。
| dwInheritanceType | DWORD | in | 取得する継承サービスの種類。 |
| ppServices | IPortableDevicePropVariantCollection** | out | サービスの一覧を受け取る IPortableDevicePropVariantCollection インターフェイス。継承サービスが見つからない場合は、空のコレクションが返されます。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
解説(Remarks)
現在のところ、デバイスサービスは抽象サービスを実装することによってのみ継承できます。これは、オブジェクト指向プログラミングにおいてクラスが抽象インターフェイスや仮想クラスのメソッドを実装するのと同様です。抽象サービスを実装することで、デバイスサービスはその抽象サービスが定義するすべてのフォーマット、プロパティ、およびメソッドの動作をサポートします。たとえば、Contacts サービスが Anchor Sync 抽象サービスを実装し、デバイスが PC との前回の同期以降にどの連絡先が更新されたかを示すマーカーを保存する、といったことが考えられます。
dwInheritanceType パラメーターに指定できる値は、WPD_SERVICE_INHERITANCE_TYPES 列挙型で定義されているものです。(Windows 7 では、WPD_SERVICE_INHERITANCE_IMPLEMENTATION 列挙定数のみがサポートされます。)
dwInheritanceType パラメーターの値が WPD_SERVICE_INHERITANCE_IMPLEMENTATION の場合、ppServices パラメーターで指定されるコレクション内の各項目のバリアント型は VT_CLSID になります。
フォーマットのレンダリングプロファイルを取得します。
| Format | GUID* | in | レンダリングプロファイルを取得する対象のフォーマット。 |
| ppRenderingProfiles | IPortableDeviceValuesCollection** | out | レンダリングプロファイルの一覧を受け取る IPortableDeviceValuesCollection オブジェクト。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
解説(Remarks)
ここで取得されるレンダリングプロファイルは、WPD_FUNCTIONAL_CATEGORY_RENDERING_INFORMATION 機能オブジェクトがデバイス全体のレンダリングプロファイルとして返すものと類似しています。そのため、Retrieving the Rendering Capabilities Supported by a Device で説明されているヘルパー関数 DisplayRenderingProfile をここでも利用できます。ただし相違点もあります。GetFormatRenderingProfiles メソッドは、選択したサービスに適用され、かつフォーマットで絞り込まれたレンダリングプロファイルのみを取得します。
サービスがサポートするコマンドを取得します。
| ppCommands | IPortableDeviceKeyCollection** | out | コマンドの一覧を受け取る IPortableDeviceKeyCollection インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
WPD コマンドのオプションを取得します。
| Command | PROPERTYKEY* | in | オプションを取得する対象のコマンド。 |
| ppOptions | IPortableDeviceValues** | out | オプションの一覧を受け取る IPortableDeviceValues インターフェイス。 |
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
保留中の操作をキャンセルします。
戻り値
メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。
解説(Remarks)
このメソッドは、現在のサービスハンドル(IPortableDeviceService インターフェイスに関連付けられたセッションに対応します)上の保留中のすべての操作をキャンセルします。Windows Portable Devices (WPD) API は、特定の操作のみを対象としたキャンセルをサポートしていません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IPortableDeviceServiceCapabilities "{24DBD89D-413E-43E0-BD5B-197F3C56C886}" #usecom global IPortableDeviceServiceCapabilities IID_IPortableDeviceServiceCapabilities "{}" #comfunc global IPortableDeviceServiceCapabilities_GetSupportedMethods 3 sptr #comfunc global IPortableDeviceServiceCapabilities_GetSupportedMethodsByFormat 4 var,sptr #comfunc global IPortableDeviceServiceCapabilities_GetMethodAttributes 5 var,sptr #comfunc global IPortableDeviceServiceCapabilities_GetMethodParameterAttributes 6 var,var,sptr #comfunc global IPortableDeviceServiceCapabilities_GetSupportedFormats 7 sptr #comfunc global IPortableDeviceServiceCapabilities_GetFormatAttributes 8 var,sptr #comfunc global IPortableDeviceServiceCapabilities_GetSupportedFormatProperties 9 var,sptr #comfunc global IPortableDeviceServiceCapabilities_GetFormatPropertyAttributes 10 var,var,sptr #comfunc global IPortableDeviceServiceCapabilities_GetSupportedEvents 11 sptr #comfunc global IPortableDeviceServiceCapabilities_GetEventAttributes 12 var,sptr #comfunc global IPortableDeviceServiceCapabilities_GetEventParameterAttributes 13 var,var,sptr #comfunc global IPortableDeviceServiceCapabilities_GetInheritedServices 14 int,sptr #comfunc global IPortableDeviceServiceCapabilities_GetFormatRenderingProfiles 15 var,sptr #comfunc global IPortableDeviceServiceCapabilities_GetSupportedCommands 16 sptr #comfunc global IPortableDeviceServiceCapabilities_GetCommandOptions 17 var,sptr #comfunc global IPortableDeviceServiceCapabilities_Cancel 18 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IPortableDeviceServiceCapabilities "{24DBD89D-413E-43E0-BD5B-197F3C56C886}" #usecom global IPortableDeviceServiceCapabilities IID_IPortableDeviceServiceCapabilities "{}" #comfunc global IPortableDeviceServiceCapabilities_GetSupportedMethods 3 sptr #comfunc global IPortableDeviceServiceCapabilities_GetSupportedMethodsByFormat 4 sptr,sptr #comfunc global IPortableDeviceServiceCapabilities_GetMethodAttributes 5 sptr,sptr #comfunc global IPortableDeviceServiceCapabilities_GetMethodParameterAttributes 6 sptr,sptr,sptr #comfunc global IPortableDeviceServiceCapabilities_GetSupportedFormats 7 sptr #comfunc global IPortableDeviceServiceCapabilities_GetFormatAttributes 8 sptr,sptr #comfunc global IPortableDeviceServiceCapabilities_GetSupportedFormatProperties 9 sptr,sptr #comfunc global IPortableDeviceServiceCapabilities_GetFormatPropertyAttributes 10 sptr,sptr,sptr #comfunc global IPortableDeviceServiceCapabilities_GetSupportedEvents 11 sptr #comfunc global IPortableDeviceServiceCapabilities_GetEventAttributes 12 sptr,sptr #comfunc global IPortableDeviceServiceCapabilities_GetEventParameterAttributes 13 sptr,sptr,sptr #comfunc global IPortableDeviceServiceCapabilities_GetInheritedServices 14 int,sptr #comfunc global IPortableDeviceServiceCapabilities_GetFormatRenderingProfiles 15 sptr,sptr #comfunc global IPortableDeviceServiceCapabilities_GetSupportedCommands 16 sptr #comfunc global IPortableDeviceServiceCapabilities_GetCommandOptions 17 sptr,sptr #comfunc global IPortableDeviceServiceCapabilities_Cancel 18 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。