Freigeben über


Marshallen von Delegaten als Funktionszeiger

Aktualisiert: November 2007

Die folgende Tabelle enthält Beispiele dazu, wie ein verwalteter Delegat in einen Funktionszeiger in nicht verwaltetem Code gemarshallt werden kann.

Verwalteter Delegat (C#)

Nicht verwalteter Funktionszeiger (C++)

public delegate int EnumDelegate(
  IntPtr hwnd, int LParam);
[DllImport("coredll.dll")] 
static extern int EnumWindows(
  EnumDelegate d,
  Int lParm);
typedef BOOL (* WNDENUMPROC) 
  (HWND, LPARAM);
BOOL EnumWindows(
  WNDENUMPROC lpEnumFunc, 
  LPARAM lParam);
public delegate int EnumDelegate(
  IntPtr hwnd, int lParam);
[DllImport("coredll.dll")]
static extern int EnumWindows(
  [MarshalAs(UnmanagedType.FunctionPtr0]
  EnumDelegate d,
  Int lParam);
typedef BOOL (* WNDENUMPROC) 
  (HWND, LPARAM);
BOOL EnumWindows(
  WNDENUMPROC lpENumFunc,
  LPARAM lParam);

Siehe auch

Weitere Ressourcen

Unterstützung von Marshalling in .NET Compact Framework