Marshal.GetIUnknownForObject(Object) メソッド

定義

マネージド オブジェクトから IUnknown インターフェイスを返します。

public:
 static IntPtr GetIUnknownForObject(System::Object ^ o);
[System.Security.SecurityCritical]
public static IntPtr GetIUnknownForObject(object o);
public static IntPtr GetIUnknownForObject(object o);
[<System.Security.SecurityCritical>]
static member GetIUnknownForObject : obj -> nativeint
static member GetIUnknownForObject : obj -> nativeint
Public Shared Function GetIUnknownForObject (o As Object) As IntPtr

パラメーター

o
Object

IUnknown インターフェイスが要求されるオブジェクト。

返品

IntPtr

nativeint

o パラメーターのIUnknown ポインター。

属性

次の例では、GetIUnknownForObject メソッドを使用してマネージド オブジェクトの IUnknown インターフェイスを取得する方法を示します。

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

注釈

マネージド コードでは、 IUnknown インターフェイスを直接操作することはめったにありません。 ただし、 GetIUnknownForObject は、COM オブジェクト パラメーターを IntPtr 型として公開するメソッドを呼び出す場合や、カスタム マーシャリングを使用する場合に便利です。 このメソッドを使用してオブジェクトを呼び出すと、ポインターが返される前に、インターフェイス ポインターで参照カウントがインクリメントされます。 ポインターが終了したら、常に Marshal.Release を使用して参照カウントを減らします。 このメソッドは、 Marshal.GetObjectForIUnknown メソッドとは逆の機能を提供します。

マネージド オブジェクトでこのメソッドを使用して、オブジェクトの COM 呼び出し可能ラッパー へのインターフェイス ポインターを取得することもできます。

適用対象

こちらもご覧ください