/[rdesktop]/jpeg/rdesktop/trunk/scard.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /jpeg/rdesktop/trunk/scard.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1312 by stargo, Wed Nov 1 21:26:55 2006 UTC revision 1317 by stargo, Thu Nov 2 11:09:35 2006 UTC
# Line 810  TS_SCardConnect(STREAM in, STREAM out, B Line 810  TS_SCardConnect(STREAM in, STREAM out, B
810                            (MYPCSC_DWORD) dwPreferredProtocol, &myHCard, &dwActiveProtocol);                            (MYPCSC_DWORD) dwPreferredProtocol, &myHCard, &dwActiveProtocol);
811          hCard = scHandleToServer(myHCard);          hCard = scHandleToServer(myHCard);
812  #ifdef WITH_SCARD_DEBUG  #ifdef WITH_SCARD_DEBUG
813          printf("[RECEIVED HCARD 0x%016lx]\n", myHCard);          printf("[RECEIVED HCARD 0x%016lx]\n", (unsigned long) myHCard);
814          printf("[MANGLED  HCARD 0x%08x]\n", hCard);          printf("[MANGLED  HCARD 0x%08x]\n", hCard);
815  #endif  #endif
816          if (rv != SCARD_S_SUCCESS)          if (rv != SCARD_S_SUCCESS)
# Line 891  TS_SCardReconnect(STREAM in, STREAM out) Line 891  TS_SCardReconnect(STREAM in, STREAM out)
891          printf("[INIT  = 0x%.8x]\n", (unsigned int) dwInitialization);          printf("[INIT  = 0x%.8x]\n", (unsigned int) dwInitialization);
892          printf("[hContext = 0x%.8x]\n", (unsigned int) hContext);          printf("[hContext = 0x%.8x]\n", (unsigned int) hContext);
893          printf("[hCard = 0x%.8x]\n", (unsigned int) hCard);          printf("[hCard = 0x%.8x]\n", (unsigned int) hCard);
894          printf("[myHCard = 0x%016lx]\n", myHCard);          printf("[myHCard = 0x%016lx]\n", (unsigned long) myHCard);
895  #endif  #endif
896          rv = SCardReconnect(myHCard, (MYPCSC_DWORD) dwShareMode, (MYPCSC_DWORD) dwPreferredProtocol,          rv = SCardReconnect(myHCard, (MYPCSC_DWORD) dwShareMode, (MYPCSC_DWORD) dwPreferredProtocol,
897                              (MYPCSC_DWORD) dwInitialization, &dwActiveProtocol);                              (MYPCSC_DWORD) dwInitialization, &dwActiveProtocol);
# Line 1372  TS_SCardBeginTransaction(STREAM in, STRE Line 1372  TS_SCardBeginTransaction(STREAM in, STRE
1372          myHCard = scHandleToMyPCSC(hCard);          myHCard = scHandleToMyPCSC(hCard);
1373  #ifdef WITH_SCARD_DEBUG  #ifdef WITH_SCARD_DEBUG
1374          printf("[hCard = 0x%.8x]\n", (unsigned int) hCard);          printf("[hCard = 0x%.8x]\n", (unsigned int) hCard);
1375          printf("[myHCard = 0x%016lx]\n", myHCard);          printf("[myHCard = 0x%016lx]\n", (unsigned long) myHCard);
1376  #endif  #endif
1377          rv = SCardBeginTransaction(myHCard);          rv = SCardBeginTransaction(myHCard);
1378  #ifdef WITH_SCARD_DEBUG  #ifdef WITH_SCARD_DEBUG
# Line 1400  TS_SCardEndTransaction(STREAM in, STREAM Line 1400  TS_SCardEndTransaction(STREAM in, STREAM
1400          myHCard = scHandleToMyPCSC(hCard);          myHCard = scHandleToMyPCSC(hCard);
1401  #ifdef WITH_SCARD_DEBUG  #ifdef WITH_SCARD_DEBUG
1402          printf("[hCard = 0x%.8x]\n", (unsigned int) hCard);          printf("[hCard = 0x%.8x]\n", (unsigned int) hCard);
1403          printf("[myHCard = 0x%016lx]\n", myHCard);          printf("[myHCard = 0x%016lx]\n", (unsigned long) myHCard);
1404          printf("[dwDisposition = 0x%.8x]\n", (unsigned int) dwDisposition);          printf("[dwDisposition = 0x%.8x]\n", (unsigned int) dwDisposition);
1405  #endif  #endif
1406          rv = SCardEndTransaction(myHCard, (MYPCSC_DWORD) dwDisposition);          rv = SCardEndTransaction(myHCard, (MYPCSC_DWORD) dwDisposition);
# Line 1509  TS_SCardTransmit(STREAM in, STREAM out) Line 1509  TS_SCardTransmit(STREAM in, STREAM out)
1509    
1510          if (cbRecvLength)          if (cbRecvLength)
1511          {          {
                 /* FIXME: handle responses with length > 448 bytes */  
                 if (cbRecvLength > 448)  
                 {  
 #ifdef WITH_SCARD_DEBUG  
                         printf("[RECV LEN %d -> %d]\n", (unsigned int) cbRecvLength, 400);  
 #endif  
                         cbRecvLength = 448;  
                 }  
   
   
1512                  recvBuf = SC_xmalloc(&lcHandle, cbRecvLength);                  recvBuf = SC_xmalloc(&lcHandle, cbRecvLength);
1513                  if (!recvBuf)                  if (!recvBuf)
1514                          return SC_returnNoMemoryError(&lcHandle, in, out);                          return SC_returnNoMemoryError(&lcHandle, in, out);
# Line 1557  TS_SCardTransmit(STREAM in, STREAM out) Line 1547  TS_SCardTransmit(STREAM in, STREAM out)
1547          printf("[SEND LEN = %d]\n", (unsigned int) cbSendLength);          printf("[SEND LEN = %d]\n", (unsigned int) cbSendLength);
1548          printf("[RECV LEN = %d]\n", (unsigned int) cbRecvLength);          printf("[RECV LEN = %d]\n", (unsigned int) cbRecvLength);
1549          printf("[hCard = 0x%.8x]\n", (unsigned int) hCard);          printf("[hCard = 0x%.8x]\n", (unsigned int) hCard);
1550          printf("[myHCard = 0x%016lx]\n", myHCard);          printf("[myHCard = 0x%016lx]\n", (unsigned long) myHCard);
1551          printf("[pioSendPci]\n");          printf("[pioSendPci]\n");
1552          if (pioSendPci == NULL)          if (pioSendPci == NULL)
1553                  printf("NULL\n");                  printf("NULL\n");
# Line 1598  TS_SCardTransmit(STREAM in, STREAM out) Line 1588  TS_SCardTransmit(STREAM in, STREAM out)
1588          rv = SCardTransmit(myHCard, myPioSendPci, sendBuf, (MYPCSC_DWORD) cbSendLength,          rv = SCardTransmit(myHCard, myPioSendPci, sendBuf, (MYPCSC_DWORD) cbSendLength,
1589                             myPioRecvPci, recvBuf, &myCbRecvLength);                             myPioRecvPci, recvBuf, &myCbRecvLength);
1590          cbRecvLength = myCbRecvLength;          cbRecvLength = myCbRecvLength;
1591    
1592            /* FIXME: handle responses with length > 448 bytes */
1593            if (cbRecvLength > 448)
1594            {
1595                    warning("Card response limited from %d to 448 bytes!\n", cbRecvLength);
1596    #ifdef WITH_SCARD_DEBUG
1597                    printf("[RECV LEN %d -> %d]\n", (unsigned int) cbRecvLength, 400);
1598    #endif
1599                    cbRecvLength = 448;
1600            }
1601    
1602          if (pioRecvPci)          if (pioRecvPci)
1603          {          {
1604                  copyIORequest_MyPCSCToServer(myPioRecvPci, pioRecvPci);                  copyIORequest_MyPCSCToServer(myPioRecvPci, pioRecvPci);
# Line 1674  TS_SCardStatus(STREAM in, STREAM out, BO Line 1675  TS_SCardStatus(STREAM in, STREAM out, BO
1675          myHCard = scHandleToMyPCSC(hCard);          myHCard = scHandleToMyPCSC(hCard);
1676  #ifdef WITH_SCARD_DEBUG  #ifdef WITH_SCARD_DEBUG
1677          printf("[hCard 0x%.8x]\n", (unsigned int) hCard);          printf("[hCard 0x%.8x]\n", (unsigned int) hCard);
1678          printf("[myHCard 0x%016lx]\n", myHCard);          printf("[myHCard 0x%016lx]\n", (unsigned long) myHCard);
1679          printf("[dwReaderLen %d]\n", (unsigned int) dwReaderLen);          printf("[dwReaderLen %d]\n", (unsigned int) dwReaderLen);
1680          printf("[dwAtrLen %d]\n", (unsigned int) dwAtrLen);          printf("[dwAtrLen %d]\n", (unsigned int) dwAtrLen);
1681  #endif  #endif
# Line 2158  TS_SCardControl(STREAM in, STREAM out) Line 2159  TS_SCardControl(STREAM in, STREAM out)
2159          printf("---> Calling SCardControl\n");          printf("---> Calling SCardControl\n");
2160  #endif  #endif
2161    
 #ifdef WITH_PCSC120  
2162          sc_nBytesReturned = nBytesReturned;          sc_nBytesReturned = nBytesReturned;
2163          myHCard = scHandleToMyPCSC(hCard);          myHCard = scHandleToMyPCSC(hCard);
2164    #ifdef WITH_PCSC120
2165          rv = SCardControl(myHCard, pInBuffer, (MYPCSC_DWORD) nInBufferSize, pOutBuffer,          rv = SCardControl(myHCard, pInBuffer, (MYPCSC_DWORD) nInBufferSize, pOutBuffer,
2166                            &sc_nBytesReturned);                            &sc_nBytesReturned);
         nBytesReturned = sc_nBytesReturned;  
2167  #else  #else
         sc_nBytesReturned = nBytesReturned;  
         myHCard = scHandleToMyPCSC(hCard);  
2168          rv = SCardControl(myHCard, (MYPCSC_DWORD) dwControlCode, pInBuffer,          rv = SCardControl(myHCard, (MYPCSC_DWORD) dwControlCode, pInBuffer,
2169                            (MYPCSC_DWORD) nInBufferSize, pOutBuffer,                            (MYPCSC_DWORD) nInBufferSize, pOutBuffer,
2170                            (MYPCSC_DWORD) nOutBufferRealSize, &sc_nBytesReturned);                            (MYPCSC_DWORD) nOutBufferRealSize, &sc_nBytesReturned);
         nBytesReturned = sc_nBytesReturned;  
2171  #endif  #endif
2172            nBytesReturned = sc_nBytesReturned;
2173    
2174  #ifdef WITH_SCARD_DEBUG  #ifdef WITH_SCARD_DEBUG
2175          if (rv != SCARD_S_SUCCESS)          if (rv != SCARD_S_SUCCESS)

Legend:
Removed from v.1312  
changed lines
  Added in v.1317

  ViewVC Help
Powered by ViewVC 1.1.26