C#中IntPtr类型与byte[]类型的问题

yuexp 2008-11-14 01:34:22
我用C#在写程序,调用了c的.dll库,库中的函数原型是:
unsigned short HD_ApduTo(
HANDLE devNo,
unsigned *apduData,
short srAPDULen,
unsigned char *respData,
short *respDataLen,
short ivCardSeat
)
其中:
apduData用来存放指令(字符串);
respData用来存放收到的数据;
respDataLen用来存放收到数据的长度。
在上面的函数中,我将apduData定义成IntPtr类型,但是如果我要调用这个函数apduData中又要存放我的命令,需要一个字符串数组,我不知道这个矛盾怎样解决。
respData和respDataLen两个参数也遇到同样的问题。
我在自己的程序如下:
[DllImport("HDIFD20B.dll")]
public static extern System.UInt16 HD_ApduTO(IntPtr hHandle,ref IntPtr APDUData,short APDULen,ref IntPtr RespData,ref IntPtr RespDataLen,short ivCardseat);
Byte[] sData = new Byte[180];
private void btnrandom_Click(object sender, EventArgs e)
{

for(int i=0;i<180;i++)
{
sData[i] =0x00;
}
sData[0] = 0x00;
sData[1] = 0x84;
sData[2] = 0x00;
sData[3] = 0x00;
sData[4] = 0x08;
flag = HD_ApduTO(hHandle, ref sData, 5, ref rData, ref ReplyLen, 1);



}
程序报错:参数“2”: 无法从“ref byte[]”转换为“ref System.IntPtr”
...全文
1483 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuexp 2008-11-14
  • 打赏
  • 举报
回复
谢谢Smartdooggie!学习!学习!
Smartdoggie 2008-11-14
  • 打赏
  • 举报
回复
Smartdoggie 2008-11-14
  • 打赏
  • 举报
回复
对基本类型数组指针,可以使用数组

public static extern System.UInt16 HD_ApduTO(IntPtr hHandle,uint[] APDUData,short APDULen,byte[] RespData, short[] RespDataLen,short ivCardseat);

试试这个,只有对结构体数组才需要使用IntPtr

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧