Freigeben über


Marshal.QueryInterface-Methode

Fordert einen Zeiger auf eine angegebene Schnittstelle von einem COM-Objekt an.

Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Shared Function QueryInterface ( _
    pUnk As IntPtr, _
    ByRef iid As Guid, _
    <OutAttribute> ByRef ppv As IntPtr _
) As Integer
'Usage
Dim pUnk As IntPtr
Dim iid As Guid
Dim ppv As IntPtr
Dim returnValue As Integer

returnValue = Marshal.QueryInterface(pUnk, iid, ppv)
public static int QueryInterface (
    IntPtr pUnk,
    ref Guid iid,
    out IntPtr ppv
)
public:
static int QueryInterface (
    IntPtr pUnk, 
    Guid% iid, 
    [OutAttribute] IntPtr% ppv
)
public static int QueryInterface (
    IntPtr pUnk, 
    /** @ref */ Guid iid, 
    /** @attribute OutAttribute() */ /** @ref */ IntPtr ppv
)
JScript unterstützt die Übergabe von Werttypargumenten als Verweis nicht.

Parameter

  • pUnk
    Die abzufragende Schnittstelle.
  • iid
    Eine als Verweis übergebene Guid, die die IID (Interface Identifier, Schnittstellenbezeichner) der angeforderten Schnittstelle darstellt.
  • ppv
    Enthält nach dem Beenden der Methode einen Verweis auf die zurückgegebene Schnittstelle.

Rückgabewert

Ein HRESULT, das den Erfolg oder Fehler des Aufrufs angibt.

Hinweise

Die QueryInterface-Methode macht das IUnknown::QueryInterface eines COM-Objekts verfügbar, das versucht, einen bestimmten Schnittstellenzeiger abzurufen. Das Verwenden von QueryInterface für ein COM-Objekt entspricht der Ausführung eines Umwandlungsvorgangs in verwaltetem Code. Das Aufrufen eines Objekts mit dieser Methode bewirkt, dass der Verweiszähler für den Schnittstellenzeiger vor der Rückgabe des Zeigers inkrementiert wird. Verwenden Sie immer Marshal.Release, um den Verweiszähler zu dekrementieren, nachdem die Verarbeitung des Zeigers abgeschlossen ist. Zum Abrufen eines IntPtr-Werts, der einen IUnknown-Schnittstellenzeiger darstellt, können Sie Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObject oder Marshal.GetIDispatchForObject aufrufen.

Hinweis

Diese Methode verwendet SecurityAction.LinkDemand, um einen Aufruf aus nicht vertrauenswürdigem Code zu verhindern. Nur der direkte Aufrufer muss über die SecurityPermissionAttribute.UnmanagedCode-Berechtigung verfügen. Wenn der Code aus teilweise vertrauenswürdigem Code aufgerufen werden kann, dürfen Benutzereingaben nicht ohne Validierung an Methoden der Marshal-Klasse übergeben werden. Wichtige Einschränkungen bei der Verwendung des LinkDemand-Members finden Sie unter "Demand" und "LinkDemand".

.NET Framework-Sicherheit

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0

Siehe auch

Referenz

Marshal-Klasse
Marshal-Member
System.Runtime.InteropServices-Namespace
AddRef
Release
GetComInterfaceForObject
GetIUnknownForObject
GetIDispatchForObject
GetObjectForIUnknown