Marshal.GetIUnknownForObject(Object) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna uma interface IUnknown de um objeto gerenciado.
public:
static IntPtr GetIUnknownForObject(System::Object ^ o);
[System.Security.SecurityCritical]
public static IntPtr GetIUnknownForObject (object o);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetIUnknownForObject (object o);
public static IntPtr GetIUnknownForObject (object o);
[<System.Security.SecurityCritical>]
static member GetIUnknownForObject : obj -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetIUnknownForObject : obj -> nativeint
static member GetIUnknownForObject : obj -> nativeint
Public Shared Function GetIUnknownForObject (o As Object) As IntPtr
Parâmetros
- o
- Object
O objeto cuja interface IUnknown
é solicitada.
Retornos
nativeint
O ponteiro IUnknown
para o parâmetro o
.
- Atributos
Exemplos
O exemplo a seguir demonstra como recuperar uma interface IUnknown para um objeto gerenciado usando o GetIUnknownForObject método .
using System;
using System.Runtime.InteropServices;
class Program
{
static void Run()
{
// Create an int object
int obj = 1;
Console.WriteLine("Calling Marshal.GetIUnknownForObject...");
// Get the IUnKnown pointer for the Integer object
IntPtr pointer = Marshal.GetIUnknownForObject(obj);
Console.WriteLine("Calling Marshal.Release...");
// Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer);
}
static void Main(string[] args)
{
Run();
}
}
Imports System.Runtime.InteropServices
Module Program
Sub Run()
' Dim an Integer object
Dim IntegerObject As Integer = 1
' Dim a pointer
Dim pointer As IntPtr
Console.WriteLine("Calling Marshal.GetIUnknownForObject...")
' Get the IUnKnown pointer for the Integer object
pointer = Marshal.GetIUnknownForObject(IntegerObject)
Console.WriteLine("Calling Marshal.Release...")
' Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer)
End Sub
Sub Main(ByVal args() As String)
Run()
End Sub
End Module
Comentários
No código gerenciado, você raramente trabalha diretamente com a IUnknown
interface . No entanto, GetIUnknownForObject é útil ao chamar um método que expõe um parâmetro de objeto COM como um IntPtr tipo ou com marshaling personalizado. Chamar um objeto com esse método faz com que a contagem de referência incremente no ponteiro da interface antes que o ponteiro seja retornado. Sempre use Marshal.Release para diminuir a contagem de referências depois de terminar com o ponteiro. Esse método fornece a funcionalidade oposta do Marshal.GetObjectForIUnknown método .
Você também pode usar esse método em um objeto gerenciado para obter um ponteiro de interface para o Wrapper Callable COM para o objeto .