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

IPortableDeviceContent2

COM
IID9b4add96-f6bf-4034-8708-eca72bf10554継承元IPortableDeviceContent自前メソッド開始 vtbl13

公式ドキュメント

デバイス上のコンテンツにアクセスするための追加メソッドを定義します。

メソッド 1

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

vtbl 13 HRESULT UpdateObjectWithPropertiesAndData(LPWSTR pszObjectID, IPortableDeviceValues* pProperties, IStream** ppData, DWORD* pdwOptimalWriteBufferSize)

デバイス上のプロパティとデータを使用してオブジェクトを更新します。

pszObjectIDLPWSTRin更新するオブジェクトの識別子。
pPropertiesIPortableDeviceValues*in更新するオブジェクトのプロパティを指定する IPortableDeviceValues インターフェイス。
ppDataIStream**outオブジェクトのデータをデバイスへ送信するための IStream インターフェイス。
pdwOptimalWriteBufferSizeDWORD*inoutppData にオブジェクトのデータを書き込む際の最適なバッファーサイズ。バッファーサイズを無視する場合は NULL を指定します。

戻り値

メソッドが成功した場合は S_OK を返します。それ以外の HRESULT 値は呼び出しが失敗したことを示します。

解説(Remarks)

デバイスの形式やオブジェクトの形式によっては、オブジェクトのプロパティの一部をデータそのものから導き出せる場合があります。あるいは、データに依存するプロパティ値を持つ場合もあります。たとえば、音楽トラックには再生時間 (duration) のプロパティがあり、これはアプリケーションが IPortableDeviceContent::CreateObjectWithPropertiesAndData メソッドを呼び出すときに指定されます。このトラックが既定のリソース (WPD_RESOURCE_DEFAULT) として格納されている場合、アプリケーションはそれを更新することがあります。その際、アプリケーションは再生時間のプロパティも併せて更新する必要が生じることがあります。このメソッドを使用すると、アプリケーションは両方の更新を同時に実行できます。

更新は、ppData パラメーターが参照するオブジェクトに対して IStream::Commit メソッドが呼び出されるまで完了しません。

進行中のデータ転送を中止するには、アプリケーションは ppData パラメーターが参照するオブジェクトに対して IStream::Revert メソッドを呼び出してください。

ppData パラメーターが参照する IStream インターフェイスのオブジェクトは、更新操作が完了した後、またはキャンセルされた後に解放する必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IPortableDeviceContent2 "{9B4ADD96-F6BF-4034-8708-ECA72BF10554}"
#usecom global IPortableDeviceContent2 IID_IPortableDeviceContent2 "{}"
#comfunc global IPortableDeviceContent2_UpdateObjectWithPropertiesAndData  13 wstr,sptr,sptr,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。