在C#中使用指针参数对方法指针进行封送处理

时间:2011-05-02 19:21:41

标签: c# interop cil

我需要使用指针参数封送方法指针,就像在C:

中一样
void (*callback)(int *x);

我如何在C#中将其写为struct field?

注意:我不介意让CLR取消引用我的指针。

1 个答案:

答案 0 :(得分:4)

如果您的方法期望回调接受指向任何结构的指针,则可以在指定P / Invoke DllImports时传递托管回调:

private delegate void MyCallback(IntPtr par);

[DllImport("MyLibrary.dll")]
public static extern void SomeFunction(MyCallback callback);

然后,您可以将IntPtr编组到实际回调方法中的适当结构中。

<强> [编辑]

要通过引用传递int参数,以下代理签名应该最有效:

private delegate void MyCallback(ref int par);