Freigeben über


Einschließen von Delegaten und nicht verwalteten Funktionszeigern

Aktualisiert: November 2007

.NET Framework, Version 2.0 und höher, bietet die Möglichkeit, Funktionszeiger mithilfe der folgenden Methoden zwischen verwaltetem und nicht verwaltetem Code zu marshallen:

  • Verwenden Sie die Marshal.GetDelegateForFunctionPointer-Methode, um einen nicht verwalteten Funktionszeiger in einen Delegaten zu marshallen. Diese Methode verwendet die System.IntPtr-Klasse, um einen nicht verwalteten Funktionszeiger darzustellen.

  • Verwenden Sie die Marshal.GetFunctionPointerForDelegate-Methode, um einen Delegaten in einen Funktionszeiger zu marshallen, der von nicht verwaltetem Code aufgerufen werden kann. Bei Verwendung dieser Methode muss manuell verhindert werden, dass der Delegat vom Garbage Collector erfasst wird. Der Garbage Collector verfolgt keine Verweise auf nicht verwalteten Code.

Beachten Sie, dass der Parametermarshaller auch in der Lage ist, Funktionszeiger in .NET Framework 2.0 und höher in Delegaten zu marshallen.

Siehe auch

Referenz

GetDelegateForFunctionPointer

GetFunctionPointerForDelegate