从处理器C代码调用.NET应用程序的回调函数

时间:2013-08-23 05:20:15

标签: .net c

我的主板上有.NET应用程序和C代码。 .NET应用程序将以回调函数作为参数调用C函数(要监视按钮是否按下?)并结束其任务。我的C应用程序将观看按钮,当按下按钮时,必须调用回调函数(.NET)。 如何从我的C代码中调用回调函数(.NET)?

1 个答案:

答案 0 :(得分:1)

在函数的C定义中,回调应表示为函数指针。为简单起见,我们假设回调返回void并且没有参数。

void NativeMethod(void (*pCallback)(void)) { 
  ...
}

调用此代码后,C代码将具有一个简单的函数指针。它可以在需要时调用它,它将转换为.Net代码。

在.Net方面,我们需要定义函数指针类型的委托和用于调用C代码的PInvoke存根。

delegate void CallbackFunc();

[DllImport("the_native_dll")]
static extern void NativeMethod(
  [MarshalAs(UnmanagedType.FunctionPtr)] CallbackFunc cb)

现在,C#代码可以使用标准委托通过NativeMethod函数调用本机代码