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

INamedPropertyStore

COM
IID71604b0f-97b0-4764-8577-2f13e98a1422継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

名前付きプロパティを取得および設定するメソッドを公開します。

メソッド 4

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

vtbl 3 HRESULT GetNamedValue(LPWSTR pszName, PROPVARIANT* ppropvar)

名前付きプロパティストアから名前付きプロパティの値を取得します。

pszNameLPWSTRin名前付きプロパティストア内のプロパティの名前を、Unicode 文字列で表したものへのポインター。
ppropvarPROPVARIANT*outこのメソッドが返るとき、プロパティの値を保持する PROPVARIANT 構造体へのポインターが格納されます。

戻り値

型: HRESULT

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

pszName で指定された名前のプロパティがプロパティストア内に見つからない場合、このメソッドは S_OK を返し、pv メンバーは VT_EMPTY に設定されます。

vtbl 4 HRESULT SetNamedValue(LPWSTR pszName, PROPVARIANT* propvar)

名前付きプロパティの値を設定します。

pszNameLPWSTRin名前付きプロパティストア内のプロパティの名前を、Unicode 文字列で表したものへのポインター。
propvarPROPVARIANT*inpszName で指定された名前のプロパティに設定する値を含む PROPVARIANT 構造体へのポインター。

戻り値

型: HRESULT

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

vtbl 5 HRESULT GetNameCount(DWORD* pdwCount)

プロパティストア内のプロパティ名の数を取得します。

pdwCountDWORD*outこのメソッドが返るとき、名前の数へのポインターが格納されます。

戻り値

型: HRESULT

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

vtbl 6 HRESULT GetNameAt(DWORD iProp, LPWSTR* pbstrName)

プロパティストア内の指定されたインデックスにあるプロパティの名前を取得します。

iPropDWORDinストア内のプロパティのインデックス。
pbstrNameLPWSTR*outこのメソッドが返るとき、プロパティの名前へのポインターが格納されます。このリソースが不要になったときに解放するのは、呼び出し側アプリケーションの責任です。

戻り値

型: HRESULT

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_INamedPropertyStore "{71604B0F-97B0-4764-8577-2F13E98A1422}"
#usecom global INamedPropertyStore IID_INamedPropertyStore "{}"
#comfunc global INamedPropertyStore_GetNamedValue  3 wstr,var
#comfunc global INamedPropertyStore_SetNamedValue  4 wstr,var
#comfunc global INamedPropertyStore_GetNameCount   5 var
#comfunc global INamedPropertyStore_GetNameAt      6 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。