读书人

怎么用C#创建事件句柄传入C++写的驱动

发布时间: 2012-10-15 09:45:25 作者: rapoo

如何用C#创建事件句柄传入C++写的驱动Dll?
C++写的驱动头文件如下:
ZT_API long _stdcall ZT518_OpenIRQ(unsigned long cardNO,
long hEventSFifo,
long hEventHFifoFewData,
long hEventHFifoHalf,
long hEventEI1,
long hEventEI2,
long hEventADFinish);

其中:
// hEventSFifo:是驱动缓冲区(SFIFO)到达阀值事件句柄
// 由用户建立一个事件,然后把事件句柄传入驱动,当SFIFO到达阀值事件产生后,
// 驱动会将这个事件设置为有信号状态,从而唤醒用户建立的用来等待的线程。
// 如果用户不需要用到多线程,请保持这个参数为0

不知道如何在C#创建事件句柄,并传入这个Dll函数?
[DllImport("pm518.dll")]
public static extern int ZT518_OpenIRQ(int cardNO,
int hEventSFifo,
int hEventHFifoFewData,
int hEventHFifoHalf,
int hEventEI1,
int hEventEI2,
int hEventADFinish);


[解决办法]

C# code
[DllImport("pm518.dll")]public static extern int ZT518_OpenIRQ(  int cardNO,  SafeWaitHandle hEventSFifo,  ...  );AutoResetEvent eventSFifo = new AutoResetEvent(false);//ThreadPool.RegisterWaitForSingleObject(eventSFifo.SafeWaitHandle, OnEventSFifo, null, 0, true);OpenIRQ(cardNO, eventSFifo.SafeWaitHandle, ...);
[解决办法]
探讨
不行,事件根本不能触发。

读书人网 >C#

热点推荐