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

IProviderProperties

COM
IIDcf986ea6-3b5f-4c5f-b88a-2f8b20ceef17継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ディスカバリープロバイダーが独自のプロパティストアを直接作成および管理するために、オプションで実装するインターフェイスです。

解説(Remarks)

このインターフェイスを実装すると、プロバイダーは最新のプロパティ値へのアクセスを提供できます。実装しない場合、クライアントは、関数インスタンスの作成時またはプロパティストアのオープン時に Function Discovery が作成したキャッシュ内の値を使用します。

プロバイダーがこのインターフェイスを実装しない場合、プロバイダーはインスタンスの作成時、またはクライアントが InstancePropertyStoreOpen を呼び出したときにプロパティストアを提供する必要があります。

メソッド 4

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

vtbl 3 HRESULT GetCount(IFunctionInstance* pIFunctionInstance, INT_PTR iProviderInstanceContext, DWORD* pdwCount)

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

pIFunctionInstanceIFunctionInstance*inIFunctionInstance インターフェイスへのポインターです。
iProviderInstanceContextINT_PTRin特定の関数インスタンスに関連付けられたコンテキストです。
pdwCountDWORD*outプロパティストア内のプロパティの数です。

戻り値

戻り値には、以下のものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
いずれかのパラメーターに無効な引数が含まれています。
E_POINTER
pdwCount パラメーターが NULL です。
vtbl 4 HRESULT GetAt(IFunctionInstance* pIFunctionInstance, INT_PTR iProviderInstanceContext, DWORD dwIndex, PROPERTYKEY* pKey)

指定したインデックスのプロパティキーを取得します。

pIFunctionInstanceIFunctionInstance*inIFunctionInstance インターフェイスへのポインターです。
iProviderInstanceContextINT_PTRin特定の関数インスタンスに関連付けられたコンテキストです。
dwIndexDWORDinプロパティキーのインデックスです。
pKeyPROPERTYKEY*outプロパティキーです。

戻り値

戻り値には、以下のものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
入力パラメーターのいずれかが無効です。
E_POINTER
pKey パラメーターが NULL です。
vtbl 5 HRESULT GetValue(IFunctionInstance* pIFunctionInstance, INT_PTR iProviderInstanceContext, PROPERTYKEY* Key, PROPVARIANT* ppropVar)

指定したプロパティキーの値を取得します。

pIFunctionInstanceIFunctionInstance*inIFunctionInstance インターフェイスへのポインターです。
iProviderInstanceContextINT_PTRin特定の関数インスタンスに関連付けられたコンテキストです。
KeyPROPERTYKEY*inプロパティキーの参照です。
ppropVarPROPVARIANT*outKey で指定されたプロパティキーの値です。キーがプロパティストア内に見つからない場合、PROPVARIANT の型は VT_EMPTY になります。

戻り値

戻り値には、以下のものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは正常に完了しました。
E_INVALIDARG
いずれかのパラメーターに無効な引数が含まれています。
E_POINTER
ppropVar パラメーターが NULL です。
E_OUTOFMEMORY
メソッドは操作を実行するために十分なメモリを割り当てることができません。

解説(Remarks)

プロパティキーの値を変更するには、SetValue メソッドを使用します。

Key に対応する値が見つからなかった場合、戻り値は S_OK となり、ppropVar には VT_NULL が設定されます。

vtbl 6 HRESULT SetValue(IFunctionInstance* pIFunctionInstance, INT_PTR iProviderInstanceContext, PROPERTYKEY* Key, PROPVARIANT* ppropVar)

指定したプロパティキーの値を設定します。

pIFunctionInstanceIFunctionInstance*inIFunctionInstance インターフェイスです。
iProviderInstanceContextINT_PTRin特定の関数インスタンスに関連付けられたコンテキストです。
KeyPROPERTYKEY*in設定するプロパティのプロパティキーです。
ppropVarPROPVARIANT*inプロパティデータです。プロパティをストアから削除するには、型が VT_EMPTYPROPVARIANT を指定します。

戻り値

戻り値には、以下のものが含まれますが、これらに限定されません。

リターンコード 説明
S_OK
メソッドは正常に完了しました。
E_POINTER
pIFunctionInstancepvProviderInstanceContext、または ppropVar パラメーターが NULL です。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IProviderProperties "{CF986EA6-3B5F-4C5F-B88A-2F8B20CEEF17}"
#usecom global IProviderProperties IID_IProviderProperties "{}"
#comfunc global IProviderProperties_GetCount  3 sptr,sptr,var
#comfunc global IProviderProperties_GetAt     4 sptr,sptr,int,var
#comfunc global IProviderProperties_GetValue  5 sptr,sptr,var,var
#comfunc global IProviderProperties_SetValue  6 sptr,sptr,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。