IMultiQI::QueryMultipleInterfaces メソッド (objidlbase.h)

オブジェクトでサポートされている複数のインターフェイスへのポインターを取得します。

このメソッドの呼び出しは、対応する数の RPC 呼び出しのオーバーヘッドが発生しない点を除き、一連の個別の QueryInterface 呼び出しを発行する場合と同じです。 マルチスレッド アプリケーションと分散環境では、最適なパフォーマンスを得るために RPC 呼び出しを最小限に抑える必要があります。

構文

HRESULT QueryMultipleInterfaces(
  [in]      ULONG    cMQIs,
  [in, out] MULTI_QI *pMQIs
);

パラメーター

[in] cMQIs

pMQIs 配列内の要素の数。

[in, out] pMQIs

MULTI_QI構造体の配列。 詳細については、「解説」を参照してください。

戻り値

このメソッドは、次の値を返すことができます。

リターン コード 説明
S_OK
メソッドは、要求されたすべてのインターフェイスへのポインターを取得しました。
S_FALSE
メソッドは、要求されたインターフェイスの一部 (すべてではない) へのポインターを取得しました。
E_NOINTERFACE
メソッドは、要求されたインターフェイスのいずれもへのポインターを取得しました。

注釈

QueryMultipleInterfaces メソッドは、MULTI_QI構造体の配列を入力として受け取ります。 各構造体はインターフェイス IID を指定し、インターフェイス ポインターと戻り値を受け取るための 2 つの追加メンバーを含みます。

このメソッドは、可能な限り多くの要求されたインターフェイス ポインターをオブジェクト プロキシから直接取得します。 プロキシに実装されていないインターフェイスごとに、 メソッドはサーバーを呼び出してポインターを取得します。 サーバーからインターフェイス ポインターを受け取ると、メソッドは対応するインターフェイス プロキシを構築し、そのポインターと、既に実装されているインターフェイスへのポインターを返します。

呼び出し元へのメモ

呼び出し元は、 まず IMultiQI インターフェイスのオブジェクト プロキシに対してクエリを実行する必要があります。 オブジェクト プロキシがこのインターフェイスへのポインターを返す場合、呼び出し元は、取得するインターフェイスごとに MULTI_QI 構造体を作成する必要があります。 各構造体では、インターフェイス IID を指定し、その pItf メンバーを NULL に設定する必要があります。 pItf メンバーを NULL に設定しないと、オブジェクト プロキシは構造体を無視します。

返されると、 QueryMultipleInterfaces は要求されたインターフェイス ポインターと戻り値をクライアントの配列内の各 MULTI_QI 構造体に書き込みます。 pItf メンバーはポインターを受け取ります。hr メンバーは戻り値を受け取ります。

QueryMultipleInterfaces の呼び出しから返された値がS_OK場合は、要求されたすべてのインターフェイスに対してポインターが返されました。

戻り値がE_NOINTERFACE場合は、要求されたインターフェイスに対してポインターが返されませんでした。 戻り値がS_FALSE場合、1 つ以上の要求されたインターフェイスへのポインターは返されませんでした。 この場合、クライアントは各MULTI_QI構造体の hr メンバーをチェックして、取得されたインターフェイスと取得されていないインターフェイスを判断する必要があります。

クライアントがオブジェクトの複数のインターフェイスを使用することを事前に認識している場合は、QueryMultipleInterfaces を事前に呼び出すことができます。その後、QueryMultipleInterfaces を使用して既に取得されているいずれかのインターフェイスに対して QueryInterface が実行されている場合、RPC 呼び出しは必要ありません。

戻り時に、呼び出し元は各MULTI_QI構造体の hr メンバーをチェックして、返されたインターフェイス ポインターと返されなかったインターフェイス ポインターを判断する必要があります。

クライアントは、Release を呼び出して、取得した各インターフェイスを 解放する必要があります。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー objidlbase.h (ObjIdl.h を含む)

こちらもご覧ください

IMultiQI