我用c++生成了一个dll,其中有这样的一个函数
bool CAssrCPCIDevice::CreateEvent(HANDLE &hEvent)
{
ULONG nOutput;
if(!DeviceIoControl(Device_Handle,ReserveOut,&hEvent,sizeof(hEvent),NULL,0,&nOutput,NULL))
{
return FALSE;
}
else
{
return TRUE;
}
}然后我需要测试该函数是否能够正常使用,我在c# 中做了这样的声明
 [DllImport("D:\\my project\\test1\\Debug\\test1.dll")]
        public static extern bool CreateEvent(IntPtr devHandle);
那我要这样产生一个handle 来验证我能否到上面的那个函数上面去呢,谢谢了。

解决方案 »

  1.   

    那我要这样产生一个handle 来验证我能否到上面的那个函数上面去呢  》》》》在C++ DLL 中加入调试代码 , 写调试内容到记事本或者直接弹出对话框。
      

  2.   

    用IntPtr可以,最好用SafeWaitHandle,以更好的对付灾难状况。
    Handle可以用2楼mysoft2004朋友讲的CreateEvent API(跟你的函数同名但没关系),
    也可以试试传入一个AutoResetEvent的关联Handle:
    DllImport("...")] 
    public static extern bool CreateEvent(SafeWaitHandle devHandle); AutoResetEvent ioEvent = new AutoResetEvent();
    bool result = CreateEvent( ioEvent.SafeWaitHandle );