Win32 API 日本語リファレンス
ホームUI.Shell › IParentAndItem

IParentAndItem

COM
IIDb3a4b685-b685-4805-99d9-5dead2873236継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

親と親の子IDを取得および設定するメソッドを公開します。IParentAndItem は通常 IShellItem 上に実装されますが、IShellItem に固有のものではありません。

解説(Remarks)

このインターフェイスによるパフォーマンスの向上は、絶対アイテム識別子リストを使用するインターフェイスである IPersistIDList と比較すると顕著です。IPersistIDList を実装したオブジェクトに対する後続の操作では IShellFolder::BindToObject の呼び出しが必要になる場合があり、これらの呼び出しはパフォーマンスに影響を与えることがあります。IParentAndItem を実装した IShellItem および参加する IShellFolder の場合、親となる IShellFolder が既にキャッシュされている可能性があります。IParentAndItem を実装し、親となる IShellFolder を直接取得/設定することで、IShellFolder インターフェイスを取得するためにアイテム識別子リストに対して IShellFolder::BindToObject を呼び出す必要がなくなります。

メソッド 2

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

vtbl 3 HRESULT SetParentAndItem(ITEMIDLIST* pidlParent, IShellFolder* psf, ITEMIDLIST* pidlChild)

アイテムの親と親の子IDを設定します。

pidlParentITEMIDLIST*in親へのポインター。
psfIShellFolder*in親である IShellFolder へのポインター。
pidlChildITEMIDLIST*inpsf を基準とした子となる PIDL。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

IParentAndItem は通常 IShellItem 上に実装されますが、IShellItem に固有のものではありません。

vtbl 4 HRESULT GetParentAndItem(ITEMIDLIST** ppidlParent, IShellFolder** ppsf, ITEMIDLIST** ppidlChild)

アイテムの親と親の子IDを取得します。

ppidlParentITEMIDLIST**outoptionalこのメソッドが返るときに、親を指定する PIDL のアドレスが格納されます。
ppsfIShellFolder**outoptionalこのメソッドが返るときに、親である IShellFolder へのポインターのアドレスが格納されます。
ppidlChildITEMIDLIST**outoptionalこのメソッドが返るときに、ppsf で指定されたものを基準として IParentAndItem オブジェクトを識別する子 PIDL のアドレスが格納されます。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。

解説(Remarks)

IParentAndItem は通常 IShellItem 上に実装されますが、IShellItem に固有のものではありません。

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