64位win7 C#调用PCSC读卡器 SCardTransmit 返回-2146435068 放在32位操作系统正常何解?
qixip 2016-03-12 10:24:49 请教 在win7 64位上运行此程序 SCardTransmit 返回-2146435068
在32位操作系统上就正常,是什么原因?
public byte[] sendAPDU(string sendMessage,byte[] SW12)
{
if (sendMessage.Length % 2 != 0)
{
sendMessage = sendMessage + "0";
}
byte[] sendMessageBuffer = StringToByteSequence(sendMessage);
byte[] receiveMessageByte = new byte[256];
int receiveLength = 256;
runResult = PCSCDLL.SCardTransmit(hCard
, SCARD_PCI_T1
, sendMessageBuffer
, sendMessageBuffer.Length
, null, receiveMessageByte, ref receiveLength);
if (runResult != SCARD_SUCCESS)
{
errMsg = "获取读卡器列表,错误代码为:" + runResult.ToString("X");
Log.WriteLog(errMsg);
throw new Exception(errMsg);
}
byte[] retMessage = new byte[receiveLength - 2];
for (int i = 0; i < receiveLength - 2; i++)
{
retMessage[i] = receiveMessageByte[i];
}
SW12[0] = receiveMessageByte[receiveLength - 2];
SW12[1] = receiveMessageByte[receiveLength - 1];
return retMessage;
}
///////////////////////////////////////////////////////////////////////////////////////////////
public class SCARD_IO_REQUEST
{
public int dwProtocol;
public int cbPciLength;
}
///////////////////////////////////////////////////////////////////////////////////////////////
/// <summary>
/// 向卡片发送数据
/// </summary>
/// <param name="hCard">卡片句柄</param>
/// <param name="pioSendPci">指令的协议头结构的指针</param>
/// <param name="pbSendBuffer">写卡数据</param>
/// <param name="cbSendLength">写卡数据长度</param>
/// <param name="pioRecvPci"></param>
/// <param name="pbRecvBuffer">返回数据</param>
/// <param name="pcbRecvLength"></param>
/// <returns></returns>
[DllImport("WinSCard.dll")]
public static extern int SCardTransmit(
int hCard,
IntPtr pioSendPci,
byte[] pbSendBuffer,
int cbSendLength,
SCARD_IO_REQUEST pioRecvPci,
byte[] pbRecvBuffer,
ref int pcbRecvLength
);