ISdoDictionaryOld
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ISdoDictionaryOld インターフェイスは、Remote Access Dial-In User Service (RADIUS) 属性のディクショナリを操作するために使用します。
メソッド 5
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
EnumAttributes メソッドは、指定した属性の値を取得します。
| Id | VARIANT* | inout | 入力時は、列挙する属性を指定する VARIANT へのポインターです。この VARIANT の型 ( V_VT(Id) で得られる型) が VT_EMPTY の場合、 ISdoDictionaryOld::EnumAttributes はすべての属性を列挙します。型が VT_I4 の場合は、その VARIANT の値が、列挙する属性の ID になります。 出力時は、列挙された属性の ID を格納する SAFEARRAY へのポインターです。 |
| pValues | VARIANT* | out | 列挙された属性の値を格納する SAFEARRAY へのポインターです。 |
戻り値
メソッドが成功した場合、戻り値は S_OK です。
メソッドが失敗した場合、戻り値は次のいずれかのエラーコードです。
解説(Remarks)
各パラメーターを NULL にすることはできません。
VT(Id) = VT_EMPTY の場合は、すべての属性が返されます。それ以外の場合、VT(Id) は VT_I4 である必要があり、指定された属性のみが取得されます。
メソッドから復帰すると、Id は返された ID の SAFEARRAY となり、pValues は返された値の SAFEARRAY となります。
GetAttributeInfo は、指定した属性の情報を取得します。
| Id | ATTRIBUTEID | in | 属性の ID を指定します。 |
| pInfoIDs | VARIANT* | in | 情報 ID の配列へのポインターです。このポインターを NULL にすることはできません。 |
| pInfoValues | VARIANT* | out | 情報の値を格納する SAFEARRAY へのポインターです。 |
戻り値
メソッドが成功した場合、戻り値は S_OK です。
メソッドが失敗した場合、戻り値は次のいずれかのエラーコードです。
解説(Remarks)
Server Data Objects (SDO) はこのメソッドを公開していますが、SDO を使用するうえで必要ではありません。このメソッドの使用は推奨されません。
EnumAttributeValues メソッドは、列挙可能な属性の値を取得します。
| Id | ATTRIBUTEID | in | 属性の ID を指定します。 |
| pValueIds | VARIANT* | out | 正常に復帰した場合、列挙可能な属性の値 ID を格納する SAFEARRAY を指します。属性が列挙可能でない場合は、 VT_EMPTY のバリアントを指します。 |
| pValuesDesc | VARIANT* | out | 正常に復帰した場合、列挙可能な属性の値の説明を格納する SAFEARRAY を指します。属性が列挙可能でない場合は、 VT_EMPTY のバリアントを指します。 |
戻り値
メソッドが成功した場合、戻り値は S_OK です。
メソッドが失敗した場合、戻り値は次のいずれかのエラーコードです。
解説(Remarks)
属性が列挙可能でない場合でも、戻り値は S_OK になります。
CreateAttribute メソッドは、新しい属性オブジェクトを作成し、その IDispatch インターフェイスを返します。
| Id | ATTRIBUTEID | in | 列挙型 ATTRIBUTEID の値を指定します。この値は、作成する属性の種類を指定します。 |
| ppAttributeObject | IDispatch** | out | 作成された属性オブジェクトの IDispatch インターフェイスポインターへのポインターを受け取るポインターです。 |
戻り値
メソッドが成功した場合、戻り値は S_OK です。
メソッドが失敗した場合、戻り値は次のいずれかのエラーコードです。
GetAttributeID メソッドは、指定した属性の ID を取得します。
| bstrAttributeName | LPWSTR | in | 属性の名前を指定します。この名前は、属性の Lightweight Directory Access Protocol (LDAP) 名または表示名のいずれかです。 |
| pId | ATTRIBUTEID* | out | 指定した属性の ID を受け取る ATTRIBUTEID へのポインターです。 |
戻り値
メソッドが成功した場合、戻り値は S_OK です。
メソッドが属性を見つけられなかった場合、戻り値は DISP_E_MEMBERNOTFOUND です。
メソッドが失敗した場合、戻り値は次のいずれかのエラーコードです。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISdoDictionaryOld "{D432E5F4-53D8-11D2-9A3A-00C04FB998AC}" #usecom global ISdoDictionaryOld IID_ISdoDictionaryOld "{}" #comfunc global ISdoDictionaryOld_EnumAttributes 7 var,var #comfunc global ISdoDictionaryOld_GetAttributeInfo 8 int,var,var #comfunc global ISdoDictionaryOld_EnumAttributeValues 9 int,var,var #comfunc global ISdoDictionaryOld_CreateAttribute 10 int,sptr #comfunc global ISdoDictionaryOld_GetAttributeID 11 wstr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ISdoDictionaryOld "{D432E5F4-53D8-11D2-9A3A-00C04FB998AC}" #usecom global ISdoDictionaryOld IID_ISdoDictionaryOld "{}" #comfunc global ISdoDictionaryOld_EnumAttributes 7 sptr,sptr #comfunc global ISdoDictionaryOld_GetAttributeInfo 8 int,sptr,sptr #comfunc global ISdoDictionaryOld_EnumAttributeValues 9 int,sptr,sptr #comfunc global ISdoDictionaryOld_CreateAttribute 10 int,sptr #comfunc global ISdoDictionaryOld_GetAttributeID 11 wstr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。