Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dekrementiert den Verweiszähler für die angegebene Schnittstelle.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Shared Function Release ( _
pUnk As IntPtr _
) As Integer
'Usage
Dim pUnk As IntPtr
Dim returnValue As Integer
returnValue = Marshal.Release(pUnk)
public static int Release (
IntPtr pUnk
)
public:
static int Release (
IntPtr pUnk
)
public static int Release (
IntPtr pUnk
)
public static function Release (
pUnk : IntPtr
) : int
Parameter
- pUnk
Die freizugebende Schnittstelle.
Rückgabewert
Der neue Wert des Verweiszählers für die Schnittstelle, die durch den pUnk-Parameter angegeben ist.
Hinweise
Der Verweiszähler eines COM-Objekts wird von der Common Language Runtime automatisch verwaltet. Eine direkte Verwendung dieser Methode ist daher nicht erforderlich. Verwenden Sie diesen Wert nur für Testzwecke. In seltenen Fällen, beispielsweise beim Testen eines benutzerdefinierten Marshallers, ist es ggf. erforderlich, die Lebensdauer eines Objekts manuell zu bearbeiten. Nur Programme, die Marshal.AddRef aufrufen, dürfen Release aufrufen. Das Aufrufen von Release, nachdem der Verweiszähler 0 (null) erreicht hat, führt zu einem nicht definierten Verhalten.
Sie können Marshal.GetComInterfaceForObject, Marshal.GetIUnknownForObject oder Marshal.GetIDispatchForObject aufrufen, um einen IntPtr-Wert abzurufen, der einen freizugebenden IUnknown-Schnittstellenzeiger darstellt. Sie können diese Methoden und die Release-Methode auch für verwaltete Objekte verwenden, um die COM-Schnittstellen freizugeben, die vom COM-Aufrufwrapper des verwalteten Objekts dargestellt werden. Wenn Sie mit den Details dieses Wrappertyps nicht vertraut sind, finden Sie unter COM Callable Wrapper (CCW) weitere diesbezügliche Informationen.
Hinweis
Diese Methode verwendet SecurityAction.LinkDemand, um einen Aufruf aus nicht vertrauenswürdigem Code zu verhindern. Nur der direkte Aufrufer muss über die SecurityPermissionAttribute.UnmanagedCode-Berechtigung verfügen. Wenn der Code aus teilweise vertrauenswürdigem Code aufgerufen werden kann, dürfen Benutzereingaben nicht ohne Validierung an Methoden der Marshal-Klasse übergeben werden. Wichtige Einschränkungen bei der Verwendung des LinkDemand-Members finden Sie unter "Demand" und "LinkDemand".
Beispiel
Im folgenden Codebeispiel wird der Abruf einer IUnknown-Schnittstelle für ein verwaltetes Objekt mithilfe der GetIUnknownForObject-Methode veranschaulicht. Anschließend wird im Codebeispiel durch den Aufruf der Release-Methode der Schnittstellenzeiger freigegeben.
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
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();
}
}
.NET Framework-Sicherheit
- SecurityPermission für die Berechtigung zum Aufrufen von nicht verwaltetem Code. Zugeordnete Enumeration: UnmanagedCode Sicherheitsaktion: LinkDemand
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0
Siehe auch
Referenz
Marshal-Klasse
Marshal-Member
System.Runtime.InteropServices-Namespace
AddRef
QueryInterface
GetComInterfaceForObject
GetIUnknownForObject
GetIDispatchForObject