IMultiQI::QueryMultipleInterfaces 方法 (objidl.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 |
標頭 | objidl.h (包含 ObjIdl.h) |