IPortableDevicePropertiesBulk
COM公式ドキュメント
IPortableDevicePropertiesBulk インターフェイスは、デバイス上の複数のオブジェクトに対して複数のプロパティを非同期に取得または設定します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
QueueGetValuesByObjectList メソッドは、デバイス上の 1 つ以上の指定されたオブジェクトから、1 つ以上の指定されたプロパティを取得する要求をキューに追加します。
| pObjectIDs | IPortableDevicePropVariantCollection* | in | 照会するすべてのオブジェクトのオブジェクト ID を列挙する IPortableDevicePropVariantCollection インターフェイスへのポインターです。これらの型は VT_LPWSTR になります。 |
| pKeys | IPortableDeviceKeyCollection* | in | 要求するプロパティを指定する IPortableDeviceKeyCollection インターフェイスへのポインターです。Windows Portable Devices で定義されているプロパティの一覧については、「Properties and Attributes」を参照してください。指定したオブジェクトのすべてのプロパティを対象とする場合は NULL を指定します。 |
| pCallback | IPortableDevicePropertiesBulkCallback* | in | 取得された情報を受け取る、アプリケーションが実装した IPortableDevicePropertiesBulkCallback インターフェイスへのポインターです。 |
| pContext | GUID* | out | 要求の開始、キャンセル、または IPortableDevicePropertiesBulkCallback コールバック (実装されている場合) における要求の識別に使用される GUID へのポインターです。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示す値が含まれますが、これらに限定されるわけではありません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
キューに追加された要求は、アプリケーションが Start を呼び出すまで開始されません。このメソッドの使用方法の詳細については、「IPortableDevicePropertiesBulk Interface」を参照してください。
パフォーマンス上の理由から、pKeys パラメーターが NULL の場合でも、デバイスによってはプロパティの完全な一覧を返さないことがあります。
QueueGetValuesByObjectFormat インターフェイスは、デバイス上の特定の形式を持つオブジェクトのプロパティを取得する要求をキューに追加します。
| pguidObjectFormat | GUID* | in | オブジェクトの形式を指定する GUID へのポインターです。この型のオブジェクトのみが照会されます。 |
| pszParentObjectID | LPWSTR | in | 検索を開始する親オブジェクトのオブジェクト ID を格納する、null で終わる文字列へのポインターです。デバイス上のすべてのオブジェクトを検索するには、WPD_DEVICE_OBJECT_ID を指定します。 |
| dwDepth | DWORD | in | 親より下を検索する最大の深さです。1 は直接の子のみを意味します。この値が実際の階層数より大きくてもかまいません。任意の深さまで検索するには、0xFFFFFFFF を指定します。 |
| pKeys | IPortableDeviceKeyCollection* | in | 取得するプロパティを格納する IPortableDeviceKeyCollection インターフェイスへのポインターです。Windows Portable Devices で定義されているプロパティの一覧については、「Properties and Attributes」を参照してください。指定した形式のすべてのプロパティを対象とする場合は NULL を指定します。 |
| pCallback | IPortableDevicePropertiesBulkCallback* | in | 取得された情報を受け取る、アプリケーションが実装した IPortableDevicePropertiesBulkCallback インターフェイスへのポインターです。 |
| pContext | GUID* | out | 要求の開始、キャンセル、または IPortableDevicePropertiesBulkCallback コールバック (実装されている場合) における要求の識別に使用される GUID へのポインターです。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示す値が含まれますが、これらに限定されるわけではありません。
| 戻り値 | 説明 |
|---|---|
| 操作が正常にキューに追加されました。 |
解説(Remarks)
pguidObjectFormat パラメーターに WPD_OBJECT_FORMAT_ALL を指定すると、このメソッドはデバイス上のすべてのオブジェクトのプロパティを返します。
pszParentObjectID パラメーターに空の文字列 ("") を指定した場合、このメソッドは次の表に示すように dwDepth パラメーターに応じた検索を行います。
| dwDepth | メソッドの戻り値 |
| 0 | 結果なし |
| 1 | 指定したデバイスの値のみ。 |
| 2 | 指定したデバイスの値と、そのデバイス上で見つかったすべての機能オブジェクトの値。 |
pszParentObjectID パラメーターに WPD_DEVICE_OBJECT_ID を指定した場合、このメソッドは次の表に示すように dwDepth パラメーターに応じた検索を行います。
| dwDepth | メソッドの戻り値 |
| 0 | 指定したデバイスの値のみ。 |
| 1 | 指定したデバイスの値と、そのデバイス上で見つかったすべての機能オブジェクトの値。 |
キューに追加された要求は、アプリケーションが Start を呼び出すまで開始されません。このメソッドの使用方法の詳細については、「IPortableDevicePropertiesBulk Interface」を参照してください。
パフォーマンス上の理由から、pKeys パラメーターが NULL の場合でも、デバイスによってはプロパティの完全な一覧を返さないことがあります。
QueueSetValuesByObjectList メソッドは、デバイス上の 1 つ以上の指定されたオブジェクトに対して、1 つ以上の指定された値を設定する要求をキューに追加します。
| pObjectValues | IPortableDeviceValuesCollection* | in | 指定したオブジェクトに設定するプロパティと値を格納する IPortableDeviceValuesCollection インターフェイスへのポインターです。このインターフェイスは、それぞれが 1 つのオブジェクトを表す 1 つ以上の IPortableDeviceValues インターフェイスを保持します。各 IPortableDeviceValues インターフェイスはキーと値のペアのコレクションを保持し、キーはプロパティを識別する PROPERTYKEY、値はプロパティごとに異なるデータ型です。また、各 IPortableDeviceValues インターフェイスは、そのインターフェイスが参照するオブジェクトを識別する WPD_OBJECT_ID プロパティを 1 つ保持します。 |
| pCallback | IPortableDevicePropertiesBulkCallback* | in | 取得された情報を受け取る、アプリケーションが実装した IPortableDevicePropertiesBulkCallback インターフェイスへのポインターです。 |
| pContext | GUID* | out | 要求の開始、キャンセル、またはクライアントが実装した IPortableDevicePropertiesBulkCallback コールバックにおける要求の識別に使用される GUID へのポインターです。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示す値が含まれますが、これらに限定されるわけではありません。
| 戻り値 | 説明 |
|---|---|
| 操作が正常にキューに追加されました。 |
解説(Remarks)
キューに追加された要求は、アプリケーションが Start を呼び出すまで開始されません。このメソッドの使用方法の詳細については、「IPortableDevicePropertiesBulk Interface」を参照してください。
Start メソッドは、キューに追加された操作を開始します。
| pContext | GUID* | in | 開始する操作を識別する GUID へのポインターです。この値は、このインターフェイスの Queue... メソッドによって生成されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示す値が含まれますが、これらに限定されるわけではありません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
pContext に渡された GUID が、キューに追加された操作と一致しません。 |
Cancel メソッドは、保留中のプロパティ要求をキャンセルします。
| pContext | GUID* | in | いずれかの Queue... メソッドを呼び出して非同期要求を開始したときに取得したコンテキスト GUID へのポインターです。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示す値が含まれますが、これらに限定されるわけではありません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IPortableDevicePropertiesBulk "{482B05C0-4056-44ED-9E0F-5E23B009DA93}" #usecom global IPortableDevicePropertiesBulk IID_IPortableDevicePropertiesBulk "{}" #comfunc global IPortableDevicePropertiesBulk_QueueGetValuesByObjectList 3 sptr,sptr,sptr,var #comfunc global IPortableDevicePropertiesBulk_QueueGetValuesByObjectFormat 4 var,wstr,int,sptr,sptr,var #comfunc global IPortableDevicePropertiesBulk_QueueSetValuesByObjectList 5 sptr,sptr,var #comfunc global IPortableDevicePropertiesBulk_Start 6 var #comfunc global IPortableDevicePropertiesBulk_Cancel 7 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IPortableDevicePropertiesBulk "{482B05C0-4056-44ED-9E0F-5E23B009DA93}" #usecom global IPortableDevicePropertiesBulk IID_IPortableDevicePropertiesBulk "{}" #comfunc global IPortableDevicePropertiesBulk_QueueGetValuesByObjectList 3 sptr,sptr,sptr,sptr #comfunc global IPortableDevicePropertiesBulk_QueueGetValuesByObjectFormat 4 sptr,wstr,int,sptr,sptr,sptr #comfunc global IPortableDevicePropertiesBulk_QueueSetValuesByObjectList 5 sptr,sptr,sptr #comfunc global IPortableDevicePropertiesBulk_Start 6 sptr #comfunc global IPortableDevicePropertiesBulk_Cancel 7 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。