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 結構的陣列。 如需詳細資訊,請參閱<備註>。
傳回值
這個方法可以傳回下列值。
傳回碼 | 描述 |
---|---|
|
方法會擷取所有要求介面的指標。 |
|
方法會擷取對某些要求介面的指標,但並非全部。 |
|
方法會擷取任何要求介面的指標。 |
備註
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) |