IPortableDevicePropertiesBulkCallback
COM公式ドキュメント
IPortableDevicePropertiesBulkCallback インターフェイスは、IPortableDevicePropertiesBulk インターフェイスによって開始された非同期操作の進行状況を追跡するために、アプリケーション側で実装します。アプリケーションが IPortableDevicePropertiesBulk::Start を呼び出すと、Windows Portable Devices はまず IPortableDevicePropertiesBulkCallback::OnStart を呼び出し、続いて操作が完了するか、アプリケーションが IPortableDevicePropertiesBulk::Cancel を呼び出すか、OnProgress でエラー値を返すまで、情報を伴って IPortableDevicePropertiesBulkCallback::OnProgress を繰り返し呼び出します。最後に、操作が正常に完了したかどうかに関係なく、Windows Portable Devices は IPortableDevicePropertiesBulkCallback::OnEnd を呼び出します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
OnStart メソッドは、IPortableDevicePropertiesBulk::Start によって開始された一括操作が始まろうとしているときに、SDK によって呼び出されます。
| pContext | GUID* | in | どの操作が開始されたかを識別する GUID へのポインターです。この値は、IPortableDevicePropertiesBulk インターフェイスの Queue... メソッドによって生成されます。 |
戻り値
アプリケーションは S_OK を返すか、操作を中止するためにエラーコードを返します。アプリケーションはすべてのエラーコードを同じ方法で処理する必要があります。
OnProgress メソッドは、IPortableDevicePropertiesBulk::Start によって開始された一括操作がデバイスにデータを送信し、何らかの情報を受け取ったときに、SDK によって呼び出されます。
| pContext | GUID* | in | どの操作が進行中かを識別する GUID へのポインターです。この値は、IPortableDevicePropertiesBulk インターフェイスの Queue... メソッドによって生成されます。 |
| pResults | IPortableDeviceValuesCollection* | in | デバイスから取得した結果を格納する IPortableDeviceValuesCollection インターフェイスへのポインターです。このインターフェイスは 1 つ以上の IPortableDeviceValues インターフェイスを保持します。これらの各インターフェイスは、その値が対象とするオブジェクトのオブジェクト ID を示す文字列値 (VT_LPSTR) を持つ WPD_OBJECT_ID プロパティを 1 つ保持します。各 IPortableDeviceValues インターフェイス内のその他の値は、報告される一括操作によって異なります。QueueGetValuesByObjectFormat メソッドおよび QueueGetValuesByObjectList メソッドの場合は、さまざまな型の取得された値になります。QueueSetValuesByObjectList の場合は、値の設定時に発生したエラーを示す VT_ERROR の HRESULT 値になります。 |
戻り値
アプリケーションは S_OK を返すか、操作を中止するためにエラーコードを返します。すべてのエラーコードは同じ方法で処理されます。
解説(Remarks)
このメソッドは、操作の規模に応じて 1 回または複数回呼び出されます。
このメソッドは、必ずしもすべてのプロパティを一度に取得するわけではなく、また特定の順序でプロパティを返すわけでもありません。
このメソッドが複数回呼び出される場合、毎回同じオブジェクト識別子に対するプロパティが返されることがあります。
OnEnd メソッドは、IPortableDevicePropertiesBulk::Start によって開始された一括操作が完了したときに、SDK によって呼び出されます。
| pContext | GUID* | in | どの操作が完了したかを識別する GUID へのポインターです。この値は、IPortableDevicePropertiesBulk インターフェイスの Queue... メソッドによって生成されます。 |
| hrStatus | HRESULT | in | 一括操作の完了後にドライバーが返したエラーが格納されます。 |
戻り値
このメソッドの戻り値は無視されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IPortableDevicePropertiesBulkCallback "{9DEACB80-11E8-40E3-A9F3-F557986A7845}" #usecom global IPortableDevicePropertiesBulkCallback IID_IPortableDevicePropertiesBulkCallback "{}" #comfunc global IPortableDevicePropertiesBulkCallback_OnStart 3 var #comfunc global IPortableDevicePropertiesBulkCallback_OnProgress 4 var,sptr #comfunc global IPortableDevicePropertiesBulkCallback_OnEnd 5 var,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IPortableDevicePropertiesBulkCallback "{9DEACB80-11E8-40E3-A9F3-F557986A7845}" #usecom global IPortableDevicePropertiesBulkCallback IID_IPortableDevicePropertiesBulkCallback "{}" #comfunc global IPortableDevicePropertiesBulkCallback_OnStart 3 sptr #comfunc global IPortableDevicePropertiesBulkCallback_OnProgress 4 sptr,sptr #comfunc global IPortableDevicePropertiesBulkCallback_OnEnd 5 sptr,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。