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

IPropertyChangeArray

COM
IID380f5cad-1b5e-42f2-805d-637fd392d31e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IFileOperation に渡すことができる、複数の変更操作をまとめて扱うためのメソッドを公開します。

解説(Remarks)

このインターフェイスの標準実装を取得するには、クラス識別子 (CLSID) CLSID_PropertyChangeArray を指定して CoCreateInstance を呼び出すか、PSCreatePropertyChangeArray を呼び出します。これは、単一のファイル操作に複数の変更をまとめて渡し、ファイルへの複数回のアクセスを防ぐためのコンテナー インターフェイスです。

メソッド 7

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

vtbl 3 HRESULT GetCount(DWORD* pcOperations)

配列内の変更操作の数を取得します。

pcOperationsDWORD*out変更操作の数へのポインター。

戻り値

型: HRESULT

常に S_OK を返します。

vtbl 4 HRESULT GetAt(DWORD iIndex, GUID* riid, void** ppv)

指定した配列インデックスにある変更操作を取得します。

iIndexDWORDin取得する変更のインデックス。
riidGUID*in目的の IID への参照。
ppvvoid**outriid で指定したインターフェイスへのポインターのアドレス。通常は IPropertyChange です。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 5 HRESULT InsertAt(DWORD iIndex, IPropertyChange* ppropChange)

指定した位置に変更操作を配列に挿入します。

iIndexDWORDin変更を挿入するインデックス。
ppropChangeIPropertyChange*in変更を格納するインターフェイスへのポインター。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 6 HRESULT Append(IPropertyChange* ppropChange)

配列の末尾に変更操作を挿入します。

ppropChangeIPropertyChange*in変更を格納するインターフェイスへのポインター。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 7 HRESULT AppendOrReplace(IPropertyChange* ppropChange)

指定した変更と同じプロパティ キーに影響する変更の最初の出現を置き換えます。そのプロパティ キーがまだ配列内に存在しない場合、このメソッドはその変更を配列の末尾に追加します。

ppropChangeIPropertyChange*in変更を格納するインターフェイスへのポインター。

戻り値

型: HRESULT

成功した場合は S_OK を返し、それ以外の場合はエラー値を返します。

vtbl 8 HRESULT RemoveAt(DWORD iIndex)

指定した変更を削除します。

iIndexDWORDin削除する変更のインデックス。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

vtbl 9 HRESULT IsKeyInArray(PROPERTYKEY* key)

特定のプロパティ キーが変更配列内に存在するかどうかを指定します。

keyPROPERTYKEY*in対象となる PROPERTYKEY 構造体への参照。

戻り値

型: HRESULT

キーが見つかった場合は S_OK を返します。それ以外の場合は E_FAIL を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IPropertyChangeArray "{380F5CAD-1B5E-42F2-805D-637FD392D31E}"
#usecom global IPropertyChangeArray IID_IPropertyChangeArray "{}"
#comfunc global IPropertyChangeArray_GetCount         3 var
#comfunc global IPropertyChangeArray_GetAt            4 int,var,sptr
#comfunc global IPropertyChangeArray_InsertAt         5 int,sptr
#comfunc global IPropertyChangeArray_Append           6 sptr
#comfunc global IPropertyChangeArray_AppendOrReplace  7 sptr
#comfunc global IPropertyChangeArray_RemoveAt         8 int
#comfunc global IPropertyChangeArray_IsKeyInArray     9 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。