次の方法で共有


関数ポインターとしてのデリゲートのマーシャリング

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。]

次の表、アンマネージ コードでの関数ポインターにマネージ デリゲートをマーシャリングできる方法の例です。

マネージ デリゲート (C#)

アンマネージ関数ポインター (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.FunctionPtr)]
  EnumDelegate d,
  Int lParam);
typedef BOOL (* WNDENUMPROC) 
  (HWND, LPARAM);
BOOL EnumWindows(
  WNDENUMPROC lpENumFunc,
  LPARAM lParam);

参照

その他の技術情報

.NET Compact Framework でのマーシャリングのサポート