我在尝试在C#中使用c ++回调时遇到了麻烦,我们非常感谢您提供的任何帮助。
代码所做的第一件事就是创建一个事件:
uEvent = CreateEvent(NULL, true, false, "EventName");
之后,我得到了在c ++中实现回调的c ++函数:
int RegisterCallback(TCallbackType CallbackType, void *pLLTProfileCallback, void *pUserData)
CallbackType用于指定stdcall。然后,pLLTProfileCallback将是要调用的函数的名称,最后是用户数据。
使用该功能,我可以通过键入以下内容来回调另一个函数:
RegisterCallback(STD_CALL, (void*)FunctionName, 0)
其他功能是:
void __stdcall FunctionName(const unsigned char* pucData, unsigned int uiSize, void* pUserData)
然后,我有代码等待事件:
WaitForSingleObject(uEvent, 1000)
当我尝试在C#中执行此操作时出现问题。我要做的第一件事是从dll导入RegisterCallback函数:
[DllImport(DRIVER_DLL_NAME, EntryPoint = "s_RegisterCallback",CallingConvention = CallingConvention.StdCall)]
internal static extern int RegisterCallback(uint pLLT, TCallbackType CallbackType, IntPtr pLLTProfileCallback, IntPtr pUserData);
但是,我不知道该怎么办。你能帮我吗?