IEnumFullIDList
COM公式ドキュメント
Shell フォルダー内の項目の項目識別子リストへのポインター (PIDL) を列挙する標準的なメソッド群を公開します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定された数の IDLIST_ABSOLUTE 項目を取得します。
| celt | DWORD | in | rgelt パラメーターが参照する配列内で参照される項目の数。 |
| rgelt | ITEMIDLIST** | out | 成功した場合、PIDL 配列を格納します。実装ではこれらの項目識別子を CoTaskMemAlloc を使用して割り当てる必要があります。呼び出し元のアプリケーションは、CoTaskMemFree を使用して項目識別子を解放する責任があります。 |
| pceltFetched | DWORD* | outoptional | 成功した場合、rgelt に実際に返された絶対項目識別子の数を受け取る値へのポインターを格納します。この数は celt パラメーターで指定した値より小さい場合があります。このパラメーターは、celt が 1 の場合にのみ、エントリー時に NULL にできます。この場合、メソッドが取得できる項目は 1 個 (S_OK) または 0 個 (S_FALSE) のみだからです。 |
戻り値
種類: HRESULT
要求された celt 個の要素を正常に取得した場合、S_OK を返します。このメソッドは、要求された項目の完全な数を正常に取得した場合にのみ S_OK を返します。
S_FALSE は、列挙に残っている項目数より多くの項目が要求されたことを示します。pceltFetched パラメーターが指す値は、実際に取得された項目の数を示します。取得すべき項目がこれ以上ない場合、この値は 0 になることに注意してください。
それ以外の場合は、COM で定義されたエラー値を返します。
指定された数の IDLIST_ABSOLUTE 項目をスキップします。
| celt | DWORD | in | スキップする項目の数。 |
戻り値
種類: HRESULT
このメソッドが成功した場合、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
解説(Remarks)
列挙インデックスは、スキップした項目の数だけ進められます。
列挙子を列挙シーケンスの先頭に戻します。
戻り値
種類: HRESULT
このメソッドが成功した場合、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
現在の項目列挙オブジェクトと同じ内容および状態を持つ、新しい項目列挙オブジェクトを作成します。(IEnumFullIDList.Clone)
| ppenum | IEnumFullIDList** | out | 成功した場合、IEnumFullIDList インターフェースポインターのアドレスを格納します。 |
戻り値
種類: HRESULT
このメソッドが成功した場合、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IEnumFullIDList "{D0191542-7954-4908-BC06-B2360BBE45BA}" #usecom global IEnumFullIDList IID_IEnumFullIDList "{}" #comfunc global IEnumFullIDList_Next 3 int,var,var #comfunc global IEnumFullIDList_Skip 4 int #comfunc global IEnumFullIDList_Reset 5 #comfunc global IEnumFullIDList_Clone 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IEnumFullIDList "{D0191542-7954-4908-BC06-B2360BBE45BA}" #usecom global IEnumFullIDList IID_IEnumFullIDList "{}" #comfunc global IEnumFullIDList_Next 3 int,sptr,sptr #comfunc global IEnumFullIDList_Skip 4 int #comfunc global IEnumFullIDList_Reset 5 #comfunc global IEnumFullIDList_Clone 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。