64 |
extern DEVICE_FNS scard_fns; |
extern DEVICE_FNS scard_fns; |
65 |
#endif |
#endif |
66 |
extern FILEINFO g_fileinfo[]; |
extern FILEINFO g_fileinfo[]; |
67 |
extern BOOL g_notify_stamp; |
extern RD_BOOL g_notify_stamp; |
68 |
|
|
69 |
static VCHANNEL *rdpdr_channel; |
static VCHANNEL *rdpdr_channel; |
70 |
|
|
117 |
} |
} |
118 |
} |
} |
119 |
|
|
120 |
static BOOL |
static RD_BOOL |
121 |
rdpdr_handle_ok(int device, int handle) |
rdpdr_handle_ok(int device, int handle) |
122 |
{ |
{ |
123 |
switch (g_rdpdr_device[device].device_type) |
switch (g_rdpdr_device[device].device_type) |
138 |
} |
} |
139 |
|
|
140 |
/* Add a new io request to the table containing pending io requests so it won't block rdesktop */ |
/* Add a new io request to the table containing pending io requests so it won't block rdesktop */ |
141 |
static BOOL |
static RD_BOOL |
142 |
add_async_iorequest(uint32 device, uint32 file, uint32 id, uint32 major, uint32 length, |
add_async_iorequest(uint32 device, uint32 file, uint32 id, uint32 major, uint32 length, |
143 |
DEVICE_FNS * fns, uint32 total_timeout, uint32 interval_timeout, uint8 * buffer, |
DEVICE_FNS * fns, uint32 total_timeout, uint32 interval_timeout, uint8 * buffer, |
144 |
uint32 offset) |
uint32 offset) |
365 |
uint8 *buffer, *pst_buf; |
uint8 *buffer, *pst_buf; |
366 |
struct stream out; |
struct stream out; |
367 |
DEVICE_FNS *fns; |
DEVICE_FNS *fns; |
368 |
BOOL rw_blocking = True; |
RD_BOOL rw_blocking = True; |
369 |
RD_NTSTATUS status = RD_STATUS_INVALID_DEVICE_REQUEST; |
RD_NTSTATUS status = RD_STATUS_INVALID_DEVICE_REQUEST; |
370 |
|
|
371 |
in_uint32_le(s, device); |
in_uint32_le(s, device); |
645 |
|
|
646 |
in_uint32_le(s, info_level); /* notify mask */ |
in_uint32_le(s, info_level); /* notify mask */ |
647 |
|
|
|
g_notify_stamp = True; |
|
|
|
|
648 |
status = disk_create_notify(file, info_level); |
status = disk_create_notify(file, info_level); |
649 |
result = 0; |
result = 0; |
650 |
|
|
843 |
unimpl("RDPDR packet type %c%c%c%c\n", magic[0], magic[1], magic[2], magic[3]); |
unimpl("RDPDR packet type %c%c%c%c\n", magic[0], magic[1], magic[2], magic[3]); |
844 |
} |
} |
845 |
|
|
846 |
BOOL |
RD_BOOL |
847 |
rdpdr_init() |
rdpdr_init() |
848 |
{ |
{ |
849 |
if (g_num_devices > 0) |
if (g_num_devices > 0) |
859 |
|
|
860 |
/* Add file descriptors of pending io request to select() */ |
/* Add file descriptors of pending io request to select() */ |
861 |
void |
void |
862 |
rdpdr_add_fds(int *n, fd_set * rfds, fd_set * wfds, struct timeval *tv, BOOL * timeout) |
rdpdr_add_fds(int *n, fd_set * rfds, fd_set * wfds, struct timeval *tv, RD_BOOL * timeout) |
863 |
{ |
{ |
864 |
uint32 select_timeout = 0; /* Timeout value to be used for select() (in millisecons). */ |
uint32 select_timeout = 0; /* Timeout value to be used for select() (in millisecons). */ |
865 |
struct async_iorequest *iorq; |
struct async_iorequest *iorq; |
956 |
|
|
957 |
/* Check if select() returned with one of the rdpdr file descriptors, and complete io if it did */ |
/* Check if select() returned with one of the rdpdr file descriptors, and complete io if it did */ |
958 |
static void |
static void |
959 |
_rdpdr_check_fds(fd_set * rfds, fd_set * wfds, BOOL timed_out) |
_rdpdr_check_fds(fd_set * rfds, fd_set * wfds, RD_BOOL timed_out) |
960 |
{ |
{ |
961 |
RD_NTSTATUS status; |
RD_NTSTATUS status; |
962 |
uint32 result = 0; |
uint32 result = 0; |
1177 |
} |
} |
1178 |
|
|
1179 |
void |
void |
1180 |
rdpdr_check_fds(fd_set * rfds, fd_set * wfds, BOOL timed_out) |
rdpdr_check_fds(fd_set * rfds, fd_set * wfds, RD_BOOL timed_out) |
1181 |
{ |
{ |
1182 |
fd_set dummy; |
fd_set dummy; |
1183 |
|
|
1195 |
|
|
1196 |
|
|
1197 |
/* Abort a pending io request for a given handle and major */ |
/* Abort a pending io request for a given handle and major */ |
1198 |
BOOL |
RD_BOOL |
1199 |
rdpdr_abort_io(uint32 fd, uint32 major, RD_NTSTATUS status) |
rdpdr_abort_io(uint32 fd, uint32 major, RD_NTSTATUS status) |
1200 |
{ |
{ |
1201 |
uint32 result; |
uint32 result; |