int __stdcall GetVersion(HANDLE ComHandle, BYTE MacAddr, BYTE Version[20], char *RecordInfo);
这个是C++头文件里面的。
ComHandle,MacAddr,RecordInfo这三个参数都能确定没有问题。
就是BYTE Version[20]这个输出参数不知道对应的是什么。
byte[],StringBulid,string,[MarshalAs(UnmanagedType.LPArray, SizeConst = 20)]byte[],等等都试过了。
没有这个指定的长度还好,指定长度了不知道用什么对应。
这个是C++头文件里面的。
ComHandle,MacAddr,RecordInfo这三个参数都能确定没有问题。
就是BYTE Version[20]这个输出参数不知道对应的是什么。
byte[],StringBulid,string,[MarshalAs(UnmanagedType.LPArray, SizeConst = 20)]byte[],等等都试过了。
没有这个指定的长度还好,指定长度了不知道用什么对应。
解决方案 »
- 求助,怎么能够知道一个软件是用什么语言什么框架写的???
- c# ftps上传
- 关于大数值相加! <溢出问题>
- 小知识,大问题。
- 读取Excel,获取Excel的数据库 表名等等
- 用c#.net做了一个操作远程sql服务器上上的课户端软件,请问连接服务器数据库上的代码写到课户端软件里可以吗?安全方面有问题吗?
- 关于 using System.Windows.Forms 的问题 急急急急
- 在c#中DATETIMEPICKER控件如何只显示日期?
- 哪能看到dotNet基础类的源代码?就像原来的MFC源码一样!
- 麻烦中:C#用不了IDispatch 。 请进来讨论解决方案。
- c# 查询 Oracle 为什么 数据不同步?
- C# 调用,ABAP with a Parameter, but Get Nothing with No Error ?
第一次遇到这种BYTE Version[20]指定了长度,作为输出参数的,而且不是在结构体里面的。
然后签名方法为 out byte[] 就可以了。
你试试看。
如果BYTE Version[]参数里面没有指定长度直接用byte[]就可以了,指定长度了,就不知道用什么类型。
Marshal.Copy
Marshal.FreeHGlobal