首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-10-15 
如何用C#创建事件句柄传入C++写的驱动Dll?C++写的驱动头文件如下:ZT_API long _stdcall ZT518_OpenIRQ(uns

如何用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, ...);
[解决办法]
探讨
不行,事件根本不能触发。

热点排行