IDispatch::GetIDsOfNames
[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。]
対応する一連の整数の DISPID、IDispatch::Invoke 以降の呼び出しに使用できる単一のメンバーとオプションの引数名のセットに割り当てます。 DispGetIDsOfNames で、ディスパッチ関数 の GetIDsOfNames の標準実装を提供します。
HRESULT GetIDsOfNames(
REFIID riid,
OLECHAR FAR* FAR* rgszNames,
unsigned int cNames,
LCID lcid,
DISPID FAR* rgDispId
);
パラメーター
riid
将来使用するために予約されています。 IID_NULL に設定する必要があります。rgszNames
マッピング対象として渡される名前の配列。cNames
マッピングされる名前の数。lcid
名前を解釈する対象のロケール コンテキスト。rgDispId
呼び出し元が割り当てた配列、各要素に rgszNames 配列に渡された名前のいずれかに対応する識別子 (ID) が含まれています。 メンバー名の最初の要素に表します。 後続の要素の各メンバーのパラメーターを表します。
戻り値
返された HRESULT から取得される戻り値は、次のいずれかになります。
戻り値 |
説明 |
---|---|
S_OK |
成功。 |
E_OUTOFMEMORY |
メモリが不足しています。 |
DISP_E_UNKNOWNNAME |
1 つ以上の名前が不明です。 返される DISPID の配列は DISPID_UNKNOWN を不明な名前に対応する各エントリの保持します。 |
DISP_E_UNKNOWNLCID |
ロケール識別子 (LCID) が認識されませんでした。 |
[コメント]
実装 IDispatch ことができます、正の整数 ID 値を指定した名前に関連付けます。 プロパティの値は、既定では、ゼロは予約されています-1 は、不明な名前を示す予約されていますされ他負の値は他の目的で定義されます。 たとえば GetIDsOfNames が呼び出されると、実装は、名前のいずれかを認識しない場合は、DISP_E_UNKNOWNNAME、返し、 rgDispId 配列が不明な名前に対応するエントリの DISPID_UNKNOWN を格納します。
パラメーターとメンバー DISPID する必要が一定に保た、オブジェクトの有効期間。 これにより、クライアントを DISPID を 1 回取得し、後で使用するためにキャッシュできます。
GetIDsOfNames が 1 つ以上の名前で呼び出されるは、姓 (rgszNames [0]) が、メンバー名に対応し、以降の名前は、メンバーのパラメーターの名前に対応します。
同じ名前はコンテキストに応じて、別の DISPID をマップ可能性があります。 たとえば、名前は、特定のインターフェイスを別のインターフェイスのメンバーとして別の ID で、メンバー名として使用されてし、異なるマッピングたびに、パラメーターとして表示されます、DISPID をある可能性があります。
実行時に、 IDispatch クライアントは名前にバインドする場合、GetIDsOfNames が使用されます。 代わりにコンパイル時にバインドを IDispatch クライアントにマップできます名 DISPID ms221172(v=vs.100).md の種類の説明のインターフェイスで説明した、型情報インターフェイスを使用しています。 これにより、クライアントをコンパイル時にメンバーにバインドし GetIDsOfNames の 実行時に呼び出しを回避できます。 説明についてコンパイル時バインディングの参照してください ms221172(v=vs.100).md の種類の説明のインターフェイス。
GetIDsOfNames の実装は、大文字と小文字は区別されません。 大文字と小文字を区別した名前のマッピングを必要するユーザーを使用して型情報インターフェイス GetIDsOfNames を呼び出すよりも名前を DISPID にマップします。
例
次のコード ファイル Lines.cpp 実装 CLine クラスの GetIDsOfNames メンバー関数のサンプルします。 ActiveX または OLE オブジェクトで、標準の実装、DispGetIDsOfNames の を使用します。 この実装は、入力引数を検証する DispGetIdsOfNames によって依存します。 セキュリティ リスクを最小限に抑えるには、入力引数のより堅牢な検証を実行するコードを含めます。
STDMETHODIMP
CLine::GetIDsOfNames(
REFIID riid,
OLECHAR FAR* FAR* rgszNames,
UINT cNames,
LCID lcid,
DISPID FAR* rgDispId)
{
return DispGetIDsOfNames(m_ptinfo, rgszNames, cNames, rgDispId);
}
GetIDsOfNames プロパティの CLine の色の DISPID を取得する呼び出しする ActiveX クライアントに次のコードが表示されます。
HRESULT hresult;
IDispatch FAR* pdisp = (IDispatch FAR*)NULL;
DISPID dispid;
OLECHAR FAR* szMember = "color";
// Code that sets a pointer to the dispatch (pdisp) is omitted.
hresult = pdisp->GetIDsOfNames(
IID_NULL,
&szMember,
1, LOCALE_SYSTEM_DEFAULT,
&dispid);