各位高手:
小弟我有一个问题搞不明白,想向各位请教.在VC6中编写了一个DLL,其中有函数
ushort OpenPort(short ivPortNo, ulong ivBaud, short ivParity, HANDLE * devHandle),HANDLE * devHandle是在打开设备的时候需要返回的设备句柄,在其他各种语言中调用都没有问题,但在C#中我不知道如何调用,请高手赐教,谢谢.(在测试中我有试过在C#中申明为public static extern ushort OpenPort(short ivPortNo, ulong ivBaud,
short ivParity, out int devHandle);编译能过,但运行时报 尝试读取或写入受保护的内存错误.)
小弟我有一个问题搞不明白,想向各位请教.在VC6中编写了一个DLL,其中有函数
ushort OpenPort(short ivPortNo, ulong ivBaud, short ivParity, HANDLE * devHandle),HANDLE * devHandle是在打开设备的时候需要返回的设备句柄,在其他各种语言中调用都没有问题,但在C#中我不知道如何调用,请高手赐教,谢谢.(在测试中我有试过在C#中申明为public static extern ushort OpenPort(short ivPortNo, ulong ivBaud,
short ivParity, out int devHandle);编译能过,但运行时报 尝试读取或写入受保护的内存错误.)
ref IntPtr devHandle
Intptr rHandle = inptr.zero;
short ivPortNo = 1;
ulong ivBaud = 0;
short ivParity = 0;
OpenPort(ivPortNo, ivBaud, ivParity, out rHandle );
[DllImport(...)]
public static extern ushort OpenPort( short ivPortNo,
uint ivBaud, short ivParity,
[Out] ref Intptr devHandle); //Call
Intptr rHandle = inptr.zero;
short ivPortNo = 1;
uint ivBaud = 0;
short ivParity = 0;
OpenPort(ivPortNo, ivBaud, ivParity, ref rHandle );
public static extern ushort OpenPort( short ivPortNo,
uint ivBaud, short ivParity,
ref Intptr devHandle); //Call
Intptr rHandle = inptr.zero;
short ivPortNo = 1;
uint ivBaud = 0;
short ivParity = 0;
OpenPort(ivPortNo, ivBaud, ivParity, ref rHandle );这种方法我也有用过,但还是同样的错误.