IContextProperties
COM公式ドキュメント
コンテキストオブジェクトのプロパティへのアクセスを提供します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
コンテキストオブジェクトのプロパティの数を取得します。
| plCount | INT* | inout | コンテキストオブジェクトのプロパティの数。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
コンテキストオブジェクトのプロパティを取得します。
| name | LPWSTR | in | 取得するコンテキストオブジェクトのプロパティの名前。 以下は IIS の組み込みプロパティです。
|
| pProperty | VARIANT* | inout | プロパティへのポインター。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
IIS オブジェクトを取得するには、返された VARIANT の VT_DISPATCH メンバーを使用して、IIS オブジェクトへのインターフェイス(たとえば Response オブジェクトの場合は IResponse)に対して QueryInterface を呼び出します。
コンテキストオブジェクトのプロパティ用の列挙子への参照を取得します。
| ppenum | IEnumNames** | out | すべてのコンテキストオブジェクトのプロパティを反復処理するために使用できる、新しい列挙子オブジェクト上の IEnumNames インターフェイスへの参照。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
解説(Remarks)
EnumNames メソッドを使用して、列挙子オブジェクトへの参照を取得します。返される IEnumNames インターフェイスは、コンテキストオブジェクトのプロパティを表す BSTR 値のリストを反復処理するために使用できる複数のメソッドを公開します。名前を取得したら、GetProperty メソッドを使用して、その名前が表すコンテキストオブジェクトのプロパティへの参照を取得できます。他の COM オブジェクトと同様に、列挙子オブジェクトの使用が終わったら解放する必要があります。
コンテキストオブジェクトのプロパティを設定します。
| name | LPWSTR | in | 設定するコンテキストオブジェクトのプロパティの名前。有効なプロパティ名の一覧については、GetProperty を参照してください。 |
| property | VARIANT | in | コンテキストオブジェクトのプロパティ値。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
コンテキストオブジェクトのプロパティを削除します。
| name | LPWSTR | in | 削除するコンテキストオブジェクトのプロパティの名前。有効なプロパティ名の一覧については、GetProperty を参照してください。 |
戻り値
このメソッドは、標準の戻り値 E_INVALIDARG、E_OUTOFMEMORY、E_UNEXPECTED、E_FAIL、および S_OK を返すことがあります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IContextProperties "{D396DA85-BF8F-11D1-BBAE-00C04FC2FA5F}" #usecom global IContextProperties IID_IContextProperties "{}" #comfunc global IContextProperties_Count 3 var #comfunc global IContextProperties_GetProperty 4 wstr,var #comfunc global IContextProperties_EnumNames 5 sptr #comfunc global IContextProperties_SetProperty 6 wstr,int #comfunc global IContextProperties_RemoveProperty 7 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IContextProperties "{D396DA85-BF8F-11D1-BBAE-00C04FC2FA5F}" #usecom global IContextProperties IID_IContextProperties "{}" #comfunc global IContextProperties_Count 3 sptr #comfunc global IContextProperties_GetProperty 4 wstr,sptr #comfunc global IContextProperties_EnumNames 5 sptr #comfunc global IContextProperties_SetProperty 6 wstr,int #comfunc global IContextProperties_RemoveProperty 7 wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。