Marshal.GetComInterfaceForObject Metodo

Definizione

Restituisce un puntatore a interfaccia che rappresenta un'interfaccia per un oggetto.Returns an interface pointer that represents an interface for an object.

Overload

GetComInterfaceForObject(Object, Type)

Restituisce un puntatore a un'interfaccia IUnknown che rappresenta l'interfaccia specificata sull'oggetto specificato.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. L'accesso all'interfaccia di query è abilitato per impostazione predefinita.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Restituisce un puntatore a un'interfaccia IUnknown che rappresenta l'interfaccia specificata sull'oggetto specificato.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. L'accesso all'interfaccia di query personalizzato viene controllato dalla modalità della personalizzazione specificata.Custom query interface access is controlled by the specified customization mode.

GetComInterfaceForObject<T,TInterface>(T)

[Supportato in .NET Framework 4.5.1 e versioni successive][Supported in the .NET Framework 4.5.1 and later versions] Restituisce un puntatore a un'interfaccia IUnknown che rappresenta l'interfaccia specificata sull'oggetto del tipo specificato.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. L'accesso all'interfaccia di query è abilitato per impostazione predefinita.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type)

Avviso

Questa API è ora obsoleta.

Restituisce un puntatore a un'interfaccia IUnknown che rappresenta l'interfaccia specificata sull'oggetto specificato.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. L'accesso all'interfaccia di query è abilitato per impostazione predefinita.Custom query interface access is enabled by default.

public:
 static IntPtr GetComInterfaceForObject(System::Object ^ o, Type ^ T);
[System.Obsolete("GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to https://go.microsoft.com/fwlink/?LinkID=296509")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
static member GetComInterfaceForObject : obj * Type -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type) As IntPtr

Parametri

o
Object

Oggetto che fornisce l'interfaccia.The object that provides the interface.

T
Type

Tipo di interfaccia richiesto.The type of interface that is requested.

Restituisce

Puntatore a interfaccia che rappresenta l'interfaccia specificata per l'oggetto.The interface pointer that represents the specified interface for the object.

Attributi

Eccezioni

Il parametro T non è un'interfaccia.The T parameter is not an interface.

-oppure--or- Il tipo non è visibile a COM.The type is not visible to COM.

-oppure--or- Il parametro T è una definizione di tipo generico.The T parameter is a generic type definition.

Il parametro o non supporta l'interfaccia richiesta.The o parameter does not support the requested interface.

Il valore del parametro o è null.The o parameter is null.

-oppure--or- Il valore del parametro T è null.The T parameter is null.

Commenti

Questo metodo restituisce un puntatore a interfaccia che rappresenta l'interfaccia richiesta nell'oggetto specificato.This method returns an interface pointer that represents the requested interface on the specified object. È particolarmente utile se si dispone di un metodo non gestito che prevede che venga passato un puntatore di interfaccia.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. La chiamata a un oggetto con questo metodo determina l'incremento del conteggio dei riferimenti sul puntatore a interfaccia prima che venga restituito il puntatore.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Usare sempre Marshal.Release per decrementare il conteggio dei riferimenti una volta terminato il puntatore.Always use Marshal.Release to decrement the reference count once you have finished with the pointer. È necessario rispettare le regole definite da COM quando si utilizzano i puntatori di interfaccia COM non elaborati.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject(Object, Type) è utile quando si chiama un metodo che espone un parametro dell'oggetto COM come tipo di IntPtr o con marshalling personalizzato.GetComInterfaceForObject(Object, Type) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. Sebbene meno comune, è possibile usare questo metodo su un oggetto gestito per ottenere un puntatore al COM Callable Wrapper dell'oggetto.Although less common, you can use this method on a managed object to obtain a pointer to the object's COM callable wrapper. Ad esempio, è possibile usare GetComInterfaceForObject(Object, Type) su un oggetto gestito che viene esportato in COM per ottenere un puntatore a interfaccia per System.Runtime.InteropServices.UCOMIConnectionPointContainer.For example, you can use GetComInterfaceForObject(Object, Type) on a managed object that is exported to COM to obtain an interface pointer for System.Runtime.InteropServices.UCOMIConnectionPointContainer. Non è possibile ottenere un puntatore a un'interfaccia di classe perché un'interfaccia di classe non dispone del tipo corrispondente da passare al secondo parametro (t).You cannot obtain a pointer to a class interface since a class interface lacks the corresponding type to pass to the second parameter (t). Usare invece Marshal.GetIDispatchForObject per richiamare i membri sull'interfaccia predefinita del COM Callable Wrapper, che in genere è un'interfaccia di classe di invio automatico.Instead, use Marshal.GetIDispatchForObject to invoke the members on the default interface of the COM callable wrapper, which is usually an auto-dispatch class interface.

L'overload del metodo GetComInterfaceForObject(Object, Type) consente la personalizzazione dell'interfaccia di query per impostazione predefinita.The GetComInterfaceForObject(Object, Type) method overload allows query interface customization by default. Per specificare se applicare la personalizzazione dell'interfaccia di query, usare l'overload del metodo GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode).To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

Per ulteriori informazioni, vedere gli articoli com callable wrapper e Runtime Callable Wrapper .For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

Sicurezza

SecurityCriticalAttribute
Richiede l'attendibilità totale per il chiamante immediato.requires full trust for the immediate caller. Questo membro non può essere utilizzato da codice parzialmente attendibile o trasparente.This member cannot be used by partially trusted or transparent code.

Vedi anche

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Avviso

Questa API è ora obsoleta.

Restituisce un puntatore a un'interfaccia IUnknown che rappresenta l'interfaccia specificata sull'oggetto specificato.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. L'accesso all'interfaccia di query personalizzato viene controllato dalla modalità della personalizzazione specificata.Custom query interface access is controlled by the specified customization mode.

public:
 static IntPtr GetComInterfaceForObject(System::Object ^ o, Type ^ T, System::Runtime::InteropServices::CustomQueryInterfaceMode mode);
[System.Obsolete("GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type, mode As CustomQueryInterfaceMode) As IntPtr

Parametri

o
Object

Oggetto che fornisce l'interfaccia.The object that provides the interface.

T
Type

Tipo di interfaccia richiesto.The type of interface that is requested.

mode
CustomQueryInterfaceMode

Uno dei valori di enumerazione che indica se applicare una personalizzazione IUnknown::QueryInterface fornita da un oggetto ICustomQueryInterface.One of the enumeration values that indicates whether to apply an IUnknown::QueryInterface customization that is supplied by an ICustomQueryInterface.

Restituisce

Puntatore a interfaccia che rappresenta l'interfaccia per l'oggetto.The interface pointer that represents the interface for the object.

Attributi

Eccezioni

Il parametro T non è un'interfaccia.The T parameter is not an interface.

-oppure--or- Il tipo non è visibile a COM.The type is not visible to COM.

-oppure--or- Il parametro T è una definizione di tipo generico.The T parameter is a generic type definition.

Il parametro o dell'oggetto non supporta l'interfaccia richiesta.The object o does not support the requested interface.

Il valore del parametro o è null.The o parameter is null.

-oppure--or- Il valore del parametro T è null.The T parameter is null.

Commenti

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) consente di specificare se applicare la personalizzazione dell'interfaccia di query.GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) lets you specify whether to apply query interface customization. Usare l'overload GetComInterfaceForObject(Object, Type) per applicare la personalizzazione dell'interfaccia di query per impostazione predefinita.Use the GetComInterfaceForObject(Object, Type) overload to apply query interface customization by default.

Sicurezza

SecurityCriticalAttribute
Richiede l'attendibilità totale per il chiamante immediato.requires full trust for the immediate caller. Questo membro non può essere utilizzato da codice parzialmente attendibile o trasparente.This member cannot be used by partially trusted or transparent code.

GetComInterfaceForObject<T,TInterface>(T)

[Supportato in .NET Framework 4.5.1 e versioni successive][Supported in the .NET Framework 4.5.1 and later versions] Restituisce un puntatore a un'interfaccia IUnknown che rappresenta l'interfaccia specificata sull'oggetto del tipo specificato.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. L'accesso all'interfaccia di query è abilitato per impostazione predefinita.Custom query interface access is enabled by default.

public:
generic <typename T, typename TInterface>
 static IntPtr GetComInterfaceForObject(T o);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
static member GetComInterfaceForObject : 'T -> nativeint
Public Shared Function GetComInterfaceForObject(Of T, TInterface) (o As T) As IntPtr

Parametri di tipo

T

Tipo di o.The type of o.

TInterface

Tipo di interfaccia da restituire.The type of interface to return.

Parametri

o
T

Oggetto che fornisce l'interfaccia.The object that provides the interface.

Restituisce

Puntatore a interfaccia che rappresenta l'interfaccia TInterface.The interface pointer that represents the TInterface interface.

Attributi

Eccezioni

Il parametro TInterface non è un'interfaccia.The TInterface parameter is not an interface.

-oppure--or- Il tipo non è visibile a COM.The type is not visible to COM.

-oppure--or- Il parametro T è un tipo generico aperto.The T parameter is an open generic type.

Il parametro o non supporta l'interfaccia TInterface.The o parameter does not support the TInterface interface.

Il valore del parametro o è null.The o parameter is null.

Commenti

Questo metodo restituisce un puntatore a interfaccia che rappresenta l'interfaccia TInterface sull'oggetto specificato.This method returns an interface pointer that represents the TInterface interface on the specified object. È particolarmente utile se si dispone di un metodo non gestito che prevede che venga passato un puntatore di interfaccia.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. La chiamata a un oggetto con questo metodo determina l'incremento del conteggio dei riferimenti sul puntatore a interfaccia prima che venga restituito il puntatore.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Usare sempre il metodo Marshal.Release per decrementare il conteggio dei riferimenti al termine del puntatore.Always use the Marshal.Release method to decrement the reference count when you have finished with the pointer. È necessario rispettare le regole definite da COM quando si utilizzano i puntatori di interfaccia COM non elaborati.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject<T,TInterface>(T) è utile quando si chiama un metodo che espone un parametro dell'oggetto COM come tipo di IntPtr o con marshalling personalizzato.GetComInterfaceForObject<T,TInterface>(T) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. È anche possibile usare questo metodo su un oggetto gestito per ottenere un puntatore al COM Callable Wrapper dell'oggetto, anche se questo è meno comune.You can also use this method on a managed object to obtain a pointer to the object's COM callable wrapper, although this is less common. Ad esempio, è possibile usare GetComInterfaceForObject<T,TInterface>(T) su un oggetto gestito che viene esportato in COM per ottenere un puntatore a interfaccia per System.Runtime.InteropServices.UCOMIConnectionPointContainer.For example, you can use GetComInterfaceForObject<T,TInterface>(T) on a managed object that is exported to COM to obtain an interface pointer for System.Runtime.InteropServices.UCOMIConnectionPointContainer.

L'overload del metodo GetComInterfaceForObject<T,TInterface>(T) consente la personalizzazione dell'interfaccia di query per impostazione predefinita.The GetComInterfaceForObject<T,TInterface>(T) method overload allows query interface customization by default. Per specificare se applicare la personalizzazione dell'interfaccia di query, usare l'overload del metodo GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode).To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

Per ulteriori informazioni, vedere gli articoli com callable wrapper e Runtime Callable Wrapper .For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

Sicurezza

SecurityCriticalAttribute
Richiede l'attendibilità totale per il chiamante immediato.requires full trust for the immediate caller. Questo membro non può essere utilizzato da codice parzialmente attendibile o trasparente.This member cannot be used by partially trusted or transparent code.

Si applica a