Compartilhar via


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.Object

    O 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

SecurityCriticalAttribute

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