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構造体の配列。 詳細については、「解説」を参照してください。
戻り値
このメソッドは、次の値を返すことができます。
リターン コード | 説明 |
---|---|
|
メソッドは、要求されたすべてのインターフェイスへのポインターを取得しました。 |
|
メソッドは、要求されたインターフェイスの一部 (すべてではない) へのポインターを取得しました。 |
|
メソッドは、要求されたインターフェイスのいずれもへのポインターを取得しました。 |
注釈
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 を含む) |