Marshal.QueryInterface(IntPtr, Guid, IntPtr) Metodo

Definizione

Richiede un puntatore a un'interfaccia specificata da un oggetto COM.

public:
 static int QueryInterface(IntPtr pUnk, Guid % iid, [Runtime::InteropServices::Out] IntPtr % ppv);
[System.Security.SecurityCritical]
public static int QueryInterface (IntPtr pUnk, ref Guid iid, out IntPtr ppv);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static int QueryInterface (IntPtr pUnk, ref Guid iid, out IntPtr ppv);
public static int QueryInterface (IntPtr pUnk, ref Guid iid, out IntPtr ppv);
public static int QueryInterface (IntPtr pUnk, in Guid iid, out IntPtr ppv);
[<System.Security.SecurityCritical>]
static member QueryInterface : nativeint * Guid * nativeint -> int
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member QueryInterface : nativeint * Guid * nativeint -> int
static member QueryInterface : nativeint * Guid * nativeint -> int
Public Shared Function QueryInterface (pUnk As IntPtr, ByRef iid As Guid, ByRef ppv As IntPtr) As Integer

Parametri

pUnk
IntPtr

nativeint

Interfaccia su cui eseguire una query.

iid
Guid

Identificatore di interfaccia (IID) dell'interfaccia richiesta.

ppv
IntPtr

nativeint

Quando questo metodo restituisce un risultato, contiene un riferimento all'interfaccia restituita.

Restituisce

HRESULT che indica l'esito positivo o negativo della chiamata.

Attributi

Commenti

Il QueryInterface metodo espone il metodo IUnknown::QueryInterface di un oggetto COM, che tenta di ottenere un puntatore di interfaccia specifico. L'uso QueryInterface in un oggetto COM equivale all'esecuzione di un'operazione di cast nel codice gestito. Se si chiama un oggetto con questo metodo, il conteggio dei riferimenti viene incrementato sul puntatore dell'interfaccia prima che venga restituito il puntatore. Usare Marshal.Release sempre per decrementare il conteggio dei riferimenti al termine dell'operazione con il puntatore. Per ottenere un IntPtr valore che rappresenta un puntatore all'interfaccia IUnknown , è possibile chiamare Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObjecto Marshal.GetIDispatchForObject.

Si applica a

Vedi anche