IMultiQI::QueryMultipleInterfaces-Methode (objidlbase.h)
Ruft Zeiger auf mehrere unterstützte Schnittstellen für ein Objekt ab.
Das Aufrufen dieser Methode entspricht dem Ausführen einer Reihe separater QueryInterface-Aufrufe , mit der Ausnahme, dass ihnen nicht der Mehraufwand für eine entsprechende Anzahl von RPC-Aufrufen entsteht. In Multithreadanwendungen und verteilten Umgebungen ist es wichtig, RPC-Aufrufe auf ein Minimum zu beschränken, um eine optimale Leistung zu erzielen.
Syntax
HRESULT QueryMultipleInterfaces(
[in] ULONG cMQIs,
[in, out] MULTI_QI *pMQIs
);
Parameter
[in] cMQIs
Die Anzahl der Elemente im pMQIs-Array .
[in, out] pMQIs
Ein Array von MULTI_QI Strukturen. Weitere Informationen finden Sie in den Hinweisen.
Rückgabewert
Diese Methode kann die folgenden Werte zurückgeben.
Rückgabecode | BESCHREIBUNG |
---|---|
|
Die Methode hat Zeiger auf alle angeforderten Schnittstellen abgerufen. |
|
Die -Methode hat Zeiger auf einige, aber nicht alle der angeforderten Schnittstellen abgerufen. |
|
Die Methode hat Zeiger auf keine der angeforderten Schnittstellen abgerufen. |
Hinweise
Die QueryMultipleInterfaces-Methode verwendet als Eingabe ein Array von MULTI_QI Strukturen. Jede Struktur gibt eine Schnittstellen-IID an und enthält zwei zusätzliche Member zum Empfangen eines Schnittstellenzeigers und eines Rückgabewerts.
Diese Methode ruft so viele angeforderte Schnittstellenzeiger wie möglich direkt vom Objektproxy ab. Für jede Schnittstelle, die nicht im Proxy implementiert ist, ruft die -Methode den Server auf, um einen Zeiger abzurufen. Beim Empfang eines Schnittstellenzeigers vom Server erstellt die -Methode einen entsprechenden Schnittstellenproxy und gibt seinen Zeiger zusammen mit Zeigern auf die bereits implementierten Schnittstellen zurück.
Hinweise für Anrufer
Ein Aufrufer sollte zunächst den Objektproxy für die IMultiQI-Schnittstelle abfragen. Wenn der Objektproxy einen Zeiger auf diese Schnittstelle zurückgibt, sollte der Aufrufer dann eine MULTI_QI-Struktur für jede Schnittstelle erstellen, die er abrufen möchte. Jede Struktur sollte eine Schnittstellen-IID angeben und ihren pItf-Member auf NULL festlegen. Wenn sie den pItf-Member nicht auf NULL festlegen, wird die Struktur vom Objektproxy ignoriert.Bei der Rückgabe schreibt QueryMultipleInterfaces den angeforderten Schnittstellenzeiger und einen Rückgabewert in jede MULTI_QI-Struktur im Array des Clients. Der pItf-Member empfängt den Zeiger; der hr-Member empfängt den Rückgabewert.
Wenn der von einem Aufruf von QueryMultipleInterfaces zurückgegebene Wert S_OK ist, wurden für alle angeforderten Schnittstellen Zeiger zurückgegeben.
Wenn der Rückgabewert E_NOINTERFACE ist, wurden für keine der angeforderten Schnittstellen Zeiger zurückgegeben. Wenn der Rückgabewert S_FALSE ist, wurden keine Zeiger auf eine oder mehrere angeforderte Schnittstellen zurückgegeben. In diesem Fall sollte der Client den hr-Member jeder MULTI_QI Struktur überprüfen, um zu ermitteln, welche Schnittstellen abgerufen wurden und welche nicht.
Wenn ein Client im Voraus weiß, dass er mehrere Schnittstellen eines Objekts verwendet, kann er QueryMultipleInterfaces im Voraus aufrufen. Wenn später ein QueryInterface für eine der Schnittstellen ausgeführt wird, die bereits über QueryMultipleInterfaces abgerufen wurden, ist kein RPC-Aufruf erforderlich.
Bei der Rückgabe sollte der Aufrufer den hr-Member jeder MULTI_QI Struktur überprüfen, um zu bestimmen, welche Schnittstellenzeiger zurückgegeben wurden und welche nicht.
Der Client ist dafür verantwortlich, jede der erworbenen Schnittstellen durch Aufrufen von Release freizugeben.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | objidlbase.h (include ObjIdl.h) |