private void bConnect_Click(object sender, EventArgs e) { retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_DIRECT, 0, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(1, retCode, ""); } else { displayOut(0, 0, "成功连接到" + cbReader.Text);//Successful connection to } } else { displayOut(0, 0, "成功连接到" + cbReader.Text); } GetUID(); connActive = true; gbLoadKeys.Enabled = true; gbAuth.Enabled = true; gbBinOps.Enabled = true; groupBox1.Enabled = true; tKeyNum.Focus(); rbKType1.Checked = true; btnClear.Enabled = true; btnRead.Enabled = true; btnWrite.Enabled = true; }
private bool Connect() { bool ReturnedValue; retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { if (retCode == ModWinsCard.SCARD_W_REMOVED_CARD) { displayOut(0, 0, "Error: There is no card on the reader."); } else { displayOut(0, 0, "Error: Unxepected error."); } ReturnedValue = false; } else { displayOut(0, 0, "Successful connection to " + cbReader.Text); ReturnedValue = true; } connActive = true; return(ReturnedValue); }
private void bConnect_Click(object sender, EventArgs e) { retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(1, retCode, ""); } else { displayOut(0, 0, "Successful connection to " + cbReader.Text); } connActive = true; bGetFW.Enabled = true; gbAntenna.Enabled = true; gbRed.Enabled = true; gbGreen.Enabled = true; gbBlinkDuration.Enabled = true; bSetLED.Enabled = true; bGetFW.Enabled = true; rbAntOn.Checked = true; rbRedFinalOff.Checked = true; rbRedStateMaskOff.Checked = true; rbRedInitOff.Checked = true; rbRedBlinkMaskOff.Checked = true; rbGreenFinalOff.Checked = true; rbGreenStateMaskOff.Checked = true; rbGreenInitOff.Checked = true; rbGreenBlinkMaskOff.Checked = true; rbLinkToBuzzOpt1.Checked = true; tT1.Text = "00"; tT2.Text = "00"; tRepeat.Text = "01"; }
private bool CheckCard() { bool functionReturnValue = false; //Variable declaration int ReaderLen = 0; long tmpWord; tmpWord = 32; ATRLen = Convert.ToInt32(tmpWord); retCode = ModWinsCard.SCardStatus(hCard, cbReader.Text, ref ReaderLen, ref dwState, ref dwActProtocol, ref ATRVal[0], ref ATRLen); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { //Call DisplayOut(1, retCode, "") functionReturnValue = false; return(functionReturnValue); } else { InterpretATR(); functionReturnValue = true; } return(functionReturnValue); }
public int CardControl() { string tempstr = ""; int index = 0; for (index = 0; index <= SendLen - 1; index++) { tempstr = tempstr + " " + string.Format("{0:X2}", SendBuff[index]); } displayOut(2, 0, tempstr); retCode = ModWinsCard.SCardControl(hCard, (int)ModWinsCard.IOCTL_CCID_ESCAPE_SCARD_CTL_CODE, ref SendBuff[0], SendLen, ref RecvBuff[0], RecvLen, ref nBytesRet); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(2, retCode, ""); return(retCode); } tempstr = ""; for (index = 0; index <= RecvLen - 1; index++) { tempstr = tempstr + " " + string.Format("{0:X2}", RecvBuff[index]); } //DisplayOut(tempstr, 4); displayOut(3, 0, tempstr); return(retCode); }
private void displayOut(int errType, int retVal, string PrintText) { switch (errType) { case 0: break; case 1: PrintText = ModWinsCard.GetScardErrMsg(retVal); break; case 2: PrintText = "<" + PrintText; break; case 3: PrintText = ">" + PrintText; break; case 4: break; } mMsg.AppendText(PrintText); mMsg.AppendText("\n"); mMsg.Focus(); }
public string GetBlockValue(int block, int hCard) { var value = @""; _returnCode = AuthenticateBlock(block, hCard); if (_returnCode != ModWinsCard.SCARD_S_SUCCESS) { throw new ApplicationException(@"Fail to authenticate block", new ApplicationException(ModWinsCard.GetScardErrMsg(_returnCode))); } _recvBuffLen = _sentBuff[4] + 2; _sentBuff = new byte[255]; _recvBuff = new byte[255]; _sentBuff = APDUCommands.GetBlockValue(block); _returnCode = ModWinsCard.SCardTransmit(hCard, ref _ioSendRequest, ref _sentBuff[0], _sentBuff.Length, ref _ioSendRequest, ref _recvBuff[0], ref _recvBuffLen); if (_returnCode != ModWinsCard.SCARD_S_SUCCESS) { throw new ApplicationException(@"Fail to fetch block value", new ApplicationException(ModWinsCard.GetScardErrMsg(_returnCode))); } for (int j = 0; j <= _recvBuffLen - 3; j++) { value += Convert.ToChar(_recvBuff[j]); } return(value); }
private int CardConnect(int connType) { //bool functionReturnValue = false; if (connActive) { retCode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD); } //Connect retCode = ModWinsCard.SCardConnect(hContext, cbReader.Text, ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { if (connType != 1) { displayOut(1, retCode, ""); } connActive = false; return(retCode); } else { if (connType != 1) { displayOut(0, 0, "Successful connection to " + cbReader.Text); } //functionReturnValue = retCode; } return(retCode); }
private void btnExit_Click(object sender, System.EventArgs e) { //terminate the application retcode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD); retcode = ModWinsCard.SCardReleaseContext(hContext); Application.Exit(); }
private void btnDisconnect_Click(object sender, System.EventArgs e) { //Disconnect and unpower card if (connActive) { retcode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD); } retcode = ModWinsCard.SCardReleaseContext(hContext); connActive = false; btnFormat.Enabled = false; btnConnect.Enabled = false; btnReset.Enabled = false; txtData.Enabled = false; txtData.Text = ""; richTextBoxLogs.Clear(); cbReader.Items.Clear(); cbReader.Text = ""; GroupBox2.Enabled = false; GBUserFile.Enabled = false; RBAA11.Checked = false; RBBB22.Checked = false; RBCC33.Checked = false; }
private void bQuit_Click(object sender, EventArgs e) { // terminate the application retCode = ModWinsCard.SCardReleaseContext(hContext); retCode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD); System.Environment.Exit(0); }
private void bInit_Click() { string ReaderList = "" + Convert.ToChar(0); int indx; int pcchReaders = 0; string rName = ""; //Establish Context retCode = ModWinsCard.SCardEstablishContext(ModWinsCard.SCARD_SCOPE_USER, 0, 0, ref hContext); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(1, retCode, ""); return; } // 2. List PC/SC card readers installed in the system retCode = ModWinsCard.SCardListReaders(hContext, null, null, ref pcchReaders); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(1, retCode, ""); return; } byte[] ReadersList = new byte[pcchReaders]; // Fill reader list retCode = ModWinsCard.SCardListReaders(hContext, null, ReadersList, ref pcchReaders); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { mMsg.AppendText("SCardListReaders Error: " + ModWinsCard.GetScardErrMsg(retCode)); return; } else { displayOut(0, 0, " "); } rName = ""; indx = 0; //Convert reader buffer to string while (ReadersList[indx] != 0) { while (ReadersList[indx] != 0) { rName = rName + (char)ReadersList[indx]; indx = indx + 1; } //Add reader name to list cbReader.Items.Add(rName); rName = ""; indx = indx + 1; } if (cbReader.Items.Count > 0) { cbReader.SelectedIndex = 0; } }
private void displayOut(int errType, int retVal, string PrintText) { switch (errType) { case 0: mMsg.SelectionColor = Color.Green; break; case 1: mMsg.SelectionColor = Color.Red; PrintText = ModWinsCard.GetScardErrMsg(retVal); break; case 2: mMsg.SelectionColor = Color.Black; PrintText = "<" + PrintText; break; case 3: mMsg.SelectionColor = Color.Black; PrintText = ">" + PrintText; break; case 4: break; } mMsg.AppendText(PrintText); mMsg.AppendText("\n"); mMsg.SelectionColor = Color.Black; mMsg.Focus(); }
/// <summary> /// Write Log and Data /// </summary> /// <param name="errType"></param> /// <param name="retVal"></param> /// <param name="PrintText"></param> private void WriteLog(int errType, int retVal, string PrintText) { switch (errType) { case 0: txtMessage.SelectionColor = Color.Green; break; case 1: txtMessage.SelectionColor = Color.Red; PrintText = ModWinsCard.GetScardErrMsg(retVal); break; case 2: txtMessage.SelectionColor = Color.Black; PrintText = "<" + PrintText; break; case 3: txtMessage.SelectionColor = Color.Black; PrintText = ">" + PrintText; break; case 4: break; } txtMessage.AppendText(PrintText); txtMessage.AppendText("\n"); txtMessage.SelectionColor = Color.Black; txtMessage.Focus(); }
public int SendAPDU() { int indx; string tmpStr; pioSendRequest.dwProtocol = Aprotocol; pioSendRequest.cbPciLength = 8; // Display Apdu In tmpStr = ""; for (indx = 0; indx <= SendLen - 1; indx++) { tmpStr = tmpStr + " " + string.Format("{0:X2}", SendBuff[indx]); } displayOut(2, 0, tmpStr); retCode = ModWinsCard.SCardTransmit(hCard, ref pioSendRequest, ref SendBuff[0], SendLen, ref pioSendRequest, ref RecvBuff[0], ref RecvLen); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(1, retCode, ""); return(retCode); } tmpStr = ""; for (indx = 0; indx <= RecvLen - 1; indx++) { tmpStr = tmpStr + " " + string.Format("{0:X2}", RecvBuff[indx]); } displayOut(3, 0, tmpStr); return(retCode); }
private void bConnect_Click(object sender, EventArgs e) { retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_DIRECT, 0, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(1, retCode, ""); } else { displayOut(0, 0, "Successful connection to " + cbReader.Text); } } else { displayOut(0, 0, "Successful connection to " + cbReader.Text); } GetFirmware(); }
private static void StartTransaction() { Array.Clear(SendBuff, 0, 262); Array.Clear(RecvBuff, 0, 262); //Prepare Buffer SendBuff[0] = 0xFF; //start SendBuff[2] = 0x20; //memory adres SendBuff[3] = 0x0; SendBuff[4] = 0x01; SendBuff[5] = 0x1;//I2c sendLen = 6; RecvLen = RecvBuff.Length; ioRequest.dwProtocol = Protocol; ioRequest.cbPciLength = 8; retCode = ModWinsCard.SCardBeginTransaction(hCard); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { throw new Exception(retCode.ToString()); } retCode = ModWinsCard.SCardTransmit(hCard, ref ioRequest, ref SendBuff[0], sendLen, ref ioRequest, ref RecvBuff[0], ref RecvLen); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { throw new Exception(retCode.ToString()); } }
private void btnConnect_Click(object sender, EventArgs e) { retCode = ModWinsCard.SCardConnect(hContext, ddlReaderList.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { retCode = ModWinsCard.SCardConnect(hContext, ddlReaderList.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_DIRECT, 0, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { WriteLog(1, retCode, ""); } else { WriteLog(0, 0, "Connected to " + ddlReaderList.Text);//Successful connection to } } else { WriteLog(0, 0, "Connected to " + ddlReaderList.Text);//Successful connection to } GetUID(); connActive = true; }
private void displayOut(int errType, int retVal, string PrintText) { switch (errType) { case 0: break; case 1: PrintText = ModWinsCard.GetScardErrMsg(retVal); break; case 2: PrintText = "<" + PrintText; break; case 3: PrintText = ">" + PrintText; break; case 4: break; } mMsg.Items.Add(PrintText); mMsg.ForeColor = Color.Black; mMsg.Focus(); }
private void bConnect_Click(object sender, EventArgs e) { retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(1, retCode, ""); } else { displayOut(0, 0, "Successful connection to " + cbReader.Text); } connActive = true; bClear.Enabled = true; cbOpt1.Checked = true; cbOpt2.Checked = true; cbOpt3.Checked = true; cbOpt4.Checked = true; cbOpt5.Checked = true; cbOpt6.Checked = true; cbOpt7.Checked = true; gbPollOpt.Enabled = true; bStartPoll.Enabled = true; opt250.Checked = true; }
private void CardCk() { bool absent = false; //Establish Context retCode = ModWinsCard.SCardEstablishContext(ModWinsCard.SCARD_SCOPE_USER, 0, 0, ref hContext); if (retCode == ModWinsCard.SCARD_S_SUCCESS) { while (!Present) { Success = true; RdrState.RdrName = "ACS ACR122 0"; //Check Card Status retCode = ModWinsCard.SCardGetStatusChangeA(this.hContext, 0, ref RdrState, 1); if (retCode == ModWinsCard.SCARD_S_SUCCESS) { Success = true; if ((Convert.ToUInt32(RdrState.RdrEventState) & ModWinsCard.SCARD_STATE_PRESENT) == ModWinsCard.SCARD_STATE_PRESENT) { retCode = ModWinsCard.SCardConnect(hContext, RdrState.RdrName, ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { Success = false; MessageBox.Show(ModWinsCard.GetScardErrMsg(retCode)); } else { Success = true; connActive = true; Present = true; } } if ((Convert.ToUInt32(RdrState.RdrEventState) & ModWinsCard.SCARD_STATE_EMPTY) == ModWinsCard.SCARD_STATE_EMPTY && !absent) { absent = true; connActive = false; } } else { Success = false; MessageBox.Show(ModWinsCard.GetScardErrMsg(retCode)); } } } else { Success = false; MessageBox.Show(ModWinsCard.GetScardErrMsg(retCode)); } OnCardPresent(); OnCardAbsent(); }
private void btnInit_Click(object sender, EventArgs e) { int pcchReaders = 0; retCode = ModWinsCard.SCardEstablishContext(ModWinsCard.SCARD_SCOPE_USER, 0, 0, ref hContext); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { WriteLog(1, retCode, ""); return; } retCode = ModWinsCard.SCardListReaders(this.hContext, null, null, ref pcchReaders); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { WriteLog(1, retCode, ""); return; } byte[] ReadersList = new byte[pcchReaders]; //Fill reader list retCode = ModWinsCard.SCardListReaders(this.hContext, null, ReadersList, ref pcchReaders); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { txtMessage.AppendText("SCardListReaders Error: " + ModWinsCard.GetScardErrMsg(retCode)); return; } else { WriteLog(0, 0, " "); } //Convert reader buffer to string int idx = 0; string rName = ""; while (ReadersList[idx] != 0) { while (ReadersList[idx] != 0) { rName = rName + (char)ReadersList[idx]; idx = idx + 1; } //Add reader name to list ddlReaderList.Items.Add(rName); rName = ""; idx = idx + 1; } if (ddlReaderList.Items.Count > 0) { ddlReaderList.SelectedIndex = 0; } }
public void CardReset() { if (connActive) { retCode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD); } retCode = ModWinsCard.SCardReleaseContext(hCard); }
private void bReset_Click(object sender, EventArgs e) { if (connActive) { retCode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD); } retCode = ModWinsCard.SCardReleaseContext(hCard); InitMenu(); }
private void bGetAtr_Click(object sender, EventArgs e) { string tmpStr; int indx; displayOut(0, 0, "Invoke Card Status"); ATRLen = 33; retCode = ModWinsCard.SCardStatus(hCard, cbReader.Text, ref ReaderLen, ref dwState, ref dwActProtocol, ref ATRVal[0], ref ATRLen); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(1, retCode, ""); System.Environment.Exit(0); } else { tmpStr = "ATR Length : " + ATRLen.ToString(); displayOut(3, 0, tmpStr); tmpStr = "ATR Value : "; for (indx = 0; indx <= ATRLen - 1; indx++) { tmpStr = tmpStr + " " + string.Format("{0:X2}", ATRVal[indx]); } displayOut(3, 0, tmpStr); } tmpStr = "Active Protocol: "; switch (dwActProtocol) { case 1: tmpStr = tmpStr + "T=0"; break; case 2: tmpStr = tmpStr + "T=1"; break; default: tmpStr = "No protocol is defined."; break; } displayOut(3, 1, tmpStr); InterpretATR(); }
private void bConnect_Click(object sender, EventArgs e) { retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_EXCLUSIVE, ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref Protocol); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(1, retCode, ""); } else { displayOut(0, 0, "SCardConnect...OK"); } }
/// <summary> /// /// </summary> /// <param name="handleFlag">isWriteOrNot</param> /// <returns></returns> public int SendAPDU(int handleFlag) { pioSendRequest.dwProtocol = Aprotocol; pioSendRequest.cbPciLength = 8; // Display Apdu In string tmpStr = string.Empty; if (handleFlag == 2)//Update { for (int idx = 0; idx <= 4; idx++) { tmpStr = tmpStr + " " + string.Format("0x{0:X2}({0:D3})", SendBuff[idx]); } } else if (handleFlag == 1)//Read { for (int idx = 0; idx <= SendLen - 1; idx++) { tmpStr = tmpStr + " " + string.Format("0x{0:X2}({0:D3})", SendBuff[idx]); } } else if (handleFlag == 0)//Format { for (int idx = 0; idx <= 4; idx++) { tmpStr = tmpStr + " " + string.Format("0x{0:X2}({0:D3})", SendBuffAll[idx]); } } //WriteLog(2, 0, tmpStr); retCode = ModWinsCard.SCardTransmit(hCard, ref pioSendRequest, ref SendBuff[0], SendLen, ref pioSendRequest, ref RecvBuff[0], ref RecvLen); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { WriteLog(1, retCode, ""); return(retCode); } tmpStr = ""; for (int idx = 0; idx < RecvLen; idx++) { tmpStr = tmpStr + " " + string.Format("0x{0:X2}({0:D3})", RecvBuff[idx]); } WriteLog(3, 0, tmpStr); return(retCode); }
private int AuthenticateBlock(int nBlock, int hCard) { _ioSendRequest = new ModWinsCard.SCARD_IO_REQUEST { dwProtocol = ModWinsCard.SCARD_PROTOCOL_UNDEFINED, cbPciLength = 8 }; _recvBuffLen = 0x02; _sentBuff = new byte[255]; _recvBuff = new byte[255]; _sentBuff = APDUCommands.AuthenticateBlock(nBlock); return(ModWinsCard.SCardTransmit(hCard, ref _ioSendRequest, ref _sentBuff[0], _sentBuff.Length, ref _ioSendRequest, ref _recvBuff[0], ref _recvBuffLen)); }
private void _pollingTimer_Tick(object sender, EventArgs e) { int readerLen = 0, dwState = 0, dwProtocol = 0; _receivedBuffer = new byte[32]; var atrLen = _receivedBuffer.Length; Connect(); _returnCode = ModWinsCard.SCardStatus(_hCard, _name, ref readerLen, ref dwState, ref dwProtocol, ref _receivedBuffer[0], ref atrLen); if (_returnCode != ModWinsCard.SCARD_S_SUCCESS && ShouldChangeState(ReaderCardState.NO_CARD_DETECTED)) { _smartCard = null; OnReaderCardStateChanged(new ReaderCardStateChangedEventArgs(ReaderCardState.NO_CARD_DETECTED)); } else { try { var card = new SmartCard(atrLen, _receivedBuffer); if (ShouldChangeState(ReaderCardState.CARD_PRESENT) || card.Type != _smartCard.Type) { if (_smartCard == null) { _smartCard = card; } else { _smartCard = _smartCard.Type == card.Type ? _smartCard : card; } OnReaderCardStateChanged(new ReaderCardStateChangedEventArgs(ReaderCardState.CARD_PRESENT)); } } catch (Exception) { _smartCard = null; OnReaderCardStateChanged(new ReaderCardStateChangedEventArgs(ReaderCardState.NO_CARD_DETECTED)); } } }
private int Transmit() { ioRequest.dwProtocol = Protocol; ioRequest.cbPciLength = 8; RecvLen = 262; // Issue SCardTransmit retCode = ModWinsCard.SCardTransmit(hCard, ref ioRequest, ref SendBuff[0], SendLen, ref ioRequest, ref RecvBuff[0], ref RecvLen); if (retCode != ModWinsCard.SCARD_S_SUCCESS) { displayOut(1, retCode, ""); } return(retCode); }
private void PerformTransmitAPDU(ref ModWinsCard.APDURec apdu) { ModWinsCard.SCARD_IO_REQUEST SendRequest; ModWinsCard.SCARD_IO_REQUEST RecvRequest; SendBuff[0] = apdu.bCLA; SendBuff[1] = apdu.bINS; SendBuff[2] = apdu.bP1; SendBuff[3] = apdu.bP2; SendBuff[4] = apdu.bP3; if (apdu.IsSend) { for (indx = 0; indx < apdu.bP3; indx++) SendBuff[5 + indx] = apdu.Data[indx]; SendBuffLen = 5 + apdu.bP3; RecvBuffLen = 2; } else { SendBuffLen = 5; RecvBuffLen = 2 + apdu.bP3; } SendRequest.dwProtocol = Aprotocol; SendRequest.cbPciLength = 8; RecvRequest.dwProtocol = Aprotocol; RecvRequest.cbPciLength = 8; retcode = ModWinsCard.SCardTransmit(hCard, ref SendRequest, ref SendBuff[0], SendBuffLen, ref SendRequest, ref RecvBuff[0], ref RecvBuffLen); if (retcode != ModWinsCard.SCARD_S_SUCCESS) { logBox1.Items.Add(ModWinsCard.GetScardErrMsg(retcode)); logBox1.Items.Add("SCardTransmit Error!"); } else { logBox1.Items.Add("SCardTransmit OK..."); } sTemp = ""; // do loop for sendbuffLen for (indx = 0; indx < SendBuffLen; indx++) sTemp = sTemp + " " + string.Format("{0:X2}", SendBuff[indx]); // Display Send Buffer Value logBox1.Items.Add("Send Buffer : " + sTemp); logBox1.SelectedIndex = logBox1.Items.Count - 1; sTemp = ""; // do loop for RecvbuffLen for (indx = 0; indx < RecvBuffLen; indx++) sTemp = sTemp + " " + string.Format("{0:X2}", RecvBuff[indx]); // Display Receive Buffer Value logBox1.Items.Add("Receive Buffer:" + sTemp); logBox1.SelectedIndex = logBox1.Items.Count - 1; if (apdu.IsSend == false) { for (indx = 0; indx < apdu.bP3 + 2; indx++) apdu.Data[indx] = RecvBuff[indx]; } logBox1.SelectedIndex = logBox1.Items.Count - 1; //logBox1.Items.Add("apdu!!"); }