Método Marshal.GetIUnknownForObject (Object)
Dica
The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.
Retorna um IUnknown interface de um objeto gerenciado.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (em mscorlib.dll)
Sintaxe
[SecurityCriticalAttribute]
public static IntPtr GetIUnknownForObject(
object o
)
public:
[SecurityCriticalAttribute]
static IntPtr GetIUnknownForObject(
Object^ o
)
[<SecurityCriticalAttribute>]
static member GetIUnknownForObject :
o:Object -> nativeint
<SecurityCriticalAttribute>
Public Shared Function GetIUnknownForObject (
o As Object
) As IntPtr
Parâmetros
o
Type: System.ObjectO objeto cuja interface IUnknown é solicitada.
Valor Retornado
Type: System.IntPtr
O ponteiro IUnknown para o parâmetro o.
Comentários
No código gerenciado, raramente trabalhar diretamente com o IUnknown interface. No entanto, GetIUnknownForObject é útil ao chamar um método que expõe um parâmetro de objeto COM como uma IntPtr tipo, ou com empacotamento personalizado. Chamando um objeto com esse método faz com que a contagem de referência incrementar o ponteiro de interface antes do ponteiro será retornado. Sempre use Marshal.Release para diminuir a contagem de referência quando tiver concluído 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 COM Callable Wrapper para o objeto.
Exemplos
O exemplo a seguir demonstra como recuperar um IUnknown interface 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
Segurança
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
Informações de Versão
Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Windows Phone Silverlight
Disponível desde 8.0
Windows Phone
Disponível desde 8.1
Confira Também
Release
GetObjectForIUnknown
Classe Marshal
Namespace System.Runtime.InteropServices
Retornar ao início