共用方式為


IMultiQI::QueryMultipleInterfaces 方法 (objidlbase.h)

擷取物件上多個支援介面的指標。

呼叫這個方法相當於發出一系列個別 的 QueryInterface 呼叫,但您不會產生對應 RPC 呼叫的額外負荷。 在多線程應用程式和分散式環境中,將 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,並包含兩個額外的成員來接收介面指標和傳回值。

此方法會直接從物件 Proxy 取得所要求的介面指標數目。 對於 Proxy 上未實作的每個介面,方法會呼叫伺服器以取得指標。 從伺服器接收介面指標時,方法會建置對應的介面 Proxy,並傳回其指標及其已實作之介面的指標。

來電者的附註

呼叫端應該從查詢 IMultiQI 介面的物件 Proxy 開始。 如果物件 Proxy 傳回這個介面的指標,則呼叫端應該為想要取得的每個介面建立 MULTI_QI 結構。 每個結構都應該指定介面 IID,並將其 pItf 成員設定為 NULL。 無法將 pItf 成員設定為 NULL 會導致物件 Proxy 忽略 結構。

傳回時, QueryMultipleInterfaces 會將要求的介面指標和傳回值寫入客戶端陣列中的每個 MULTI_QI 結構。 pItf 成員會收到指標;hr 成員會收到傳回值。

如果從 對 QueryMultipleInterfaces 的呼叫傳回的值是S_OK,則會針對所有要求的介面傳回指標。

如果傳回值E_NOINTERFACE,則不會針對任何要求的介面傳回指標。 如果傳回值S_FALSE,則不會傳回一或多個要求的介面指標。 在此事件中,客戶端應該檢查每個MULTI_QI結構的 hr 成員,以判斷取得哪些介面,以及哪些介面不是。

如果用戶端事先知道它會使用數個物件的介面,它可以在前面呼叫 QueryMultipleInterfaces ,然後,如果 QueryInterface 是針對透過 QueryMultipleInterfaces 取得的其中一個介面完成,則不需要 RPC 呼叫。

傳回時,呼叫端應該檢查每個MULTI_QI結構的 hr 成員,以判斷哪些介面指標是且未傳回的。

用戶端負責藉由呼叫 Release 來釋放每個取得的介面。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 objidlbase.h (包含 ObjIdl.h)

另請參閱

IMultiQI