/[rdesktop]/sourceforge.net/trunk/rdesktop/rdpdr.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 /sourceforge.net/trunk/rdesktop/rdpdr.c

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

revision 978 by stargo, Mon Aug 15 11:44:35 2005 UTC revision 1328 by stargo, Fri Nov 3 23:51:35 2006 UTC
# Line 60  extern DEVICE_FNS serial_fns; Line 60  extern DEVICE_FNS serial_fns;
60  extern DEVICE_FNS printer_fns;  extern DEVICE_FNS printer_fns;
61  extern DEVICE_FNS parallel_fns;  extern DEVICE_FNS parallel_fns;
62  extern DEVICE_FNS disk_fns;  extern DEVICE_FNS disk_fns;
63    #ifdef WITH_SCARD
64    extern DEVICE_FNS scard_fns;
65    #endif
66  extern FILEINFO g_fileinfo[];  extern FILEINFO g_fileinfo[];
67  extern BOOL g_notify_stamp;  extern BOOL g_notify_stamp;
68    
# Line 309  rdpdr_send_available(void) Line 312  rdpdr_send_available(void)
312          channel_send(s, rdpdr_channel);          channel_send(s, rdpdr_channel);
313  }  }
314    
315  static void  void
316  rdpdr_send_completion(uint32 device, uint32 id, uint32 status, uint32 result, uint8 * buffer,  rdpdr_send_completion(uint32 device, uint32 id, uint32 status, uint32 result, uint8 * buffer,
317                        uint32 length)                        uint32 length)
318  {  {
319          uint8 magic[4] = "rDCI";          uint8 magic[4] = "rDCI";
320          STREAM s;          STREAM s;
321    
322    #ifdef WITH_SCARD
323            scard_lock(SCARD_LOCK_RDPDR);
324    #endif
325          s = channel_init(rdpdr_channel, 20 + length);          s = channel_init(rdpdr_channel, 20 + length);
326          out_uint8a(s, magic, 4);          out_uint8a(s, magic, 4);
327          out_uint32_le(s, device);          out_uint32_le(s, device);
# Line 330  rdpdr_send_completion(uint32 device, uin Line 336  rdpdr_send_completion(uint32 device, uin
336          /* hexdump(s->channel_hdr + 8, s->end - s->channel_hdr - 8); */          /* hexdump(s->channel_hdr + 8, s->end - s->channel_hdr - 8); */
337  #endif  #endif
338          channel_send(s, rdpdr_channel);          channel_send(s, rdpdr_channel);
339    #ifdef WITH_SCARD
340            scard_unlock(SCARD_LOCK_RDPDR);
341    #endif
342  }  }
343    
344  static void  static void
# Line 395  rdpdr_process_irp(STREAM s) Line 404  rdpdr_process_irp(STREAM s)
404                          break;                          break;
405    
406                  case DEVICE_TYPE_SCARD:                  case DEVICE_TYPE_SCARD:
407    #ifdef WITH_SCARD
408                            fns = &scard_fns;
409                            rw_blocking = False;
410                            break;
411    #endif
412                  default:                  default:
413    
414                          error("IRP for bad device %ld\n", device);                          error("IRP for bad device %ld\n", device);
# Line 671  rdpdr_process_irp(STREAM s) Line 685  rdpdr_process_irp(STREAM s)
685    
686                          out.data = out.p = buffer;                          out.data = out.p = buffer;
687                          out.size = sizeof(buffer);                          out.size = sizeof(buffer);
688    
689                            DEBUG_SCARD(("[SMART-CARD TRACE]\n"));
690                            DEBUG_SCARD(("device 0x%.8x\n", device));
691                            DEBUG_SCARD(("file   0x%.8x\n", file));
692                            DEBUG_SCARD(("id     0x%.8x\n", id));
693    #ifdef WITH_SCARD
694                            scardSetInfo(device, id, bytes_out + 0x14);
695    #endif
696                          status = fns->device_control(file, request, s, &out);                          status = fns->device_control(file, request, s, &out);
697                          result = buffer_len = out.p - out.data;                          result = buffer_len = out.p - out.data;
698    
699                            DEBUG_SCARD(("[SMART-CARD TRACE] OUT 0x%.8x\n", status));
700    
701                          /* Serial SERIAL_WAIT_ON_MASK */                          /* Serial SERIAL_WAIT_ON_MASK */
702                          if (status == STATUS_PENDING)                          if (status == STATUS_PENDING)
703                          {                          {
# Line 684  rdpdr_process_irp(STREAM s) Line 708  rdpdr_process_irp(STREAM s)
708                                          break;                                          break;
709                                  }                                  }
710                          }                          }
711    #ifdef WITH_SCARD
712                            else if (status == (STATUS_PENDING | 0xC0000000))
713                                    status = STATUS_PENDING;
714    #endif
715                          break;                          break;
716    
717    

Legend:
Removed from v.978  
changed lines
  Added in v.1328

  ViewVC Help
Powered by ViewVC 1.1.26