188 |
out_uint32_le(s, i); /* RDP Device ID */ |
out_uint32_le(s, i); /* RDP Device ID */ |
189 |
out_uint8p(s, g_rdpdr_device[i].name, 8); |
out_uint8p(s, g_rdpdr_device[i].name, 8); |
190 |
|
|
191 |
if (g_rdpdr_device[i].device_type == DEVICE_TYPE_PRINTER) |
switch (g_rdpdr_device[i].device_type) |
192 |
{ |
{ |
193 |
printerinfo = (PRINTER *) g_rdpdr_device[i].pdevice_data; |
case DEVICE_TYPE_PRINTER: |
194 |
|
printerinfo = (PRINTER *) g_rdpdr_device[i].pdevice_data; |
195 |
|
|
196 |
driverlen = 2 * strlen(printerinfo->driver) + 2; |
driverlen = 2 * strlen(printerinfo->driver) + 2; |
197 |
printerlen = 2 * strlen(printerinfo->printer) + 2; |
printerlen = 2 * strlen(printerinfo->printer) + 2; |
198 |
bloblen = printerinfo->bloblen; |
bloblen = printerinfo->bloblen; |
199 |
|
|
200 |
out_uint32_le(s, 24 + driverlen + printerlen + bloblen); /* length of extra info */ |
out_uint32_le(s, 24 + driverlen + printerlen + bloblen); /* length of extra info */ |
201 |
out_uint32_le(s, printerinfo->default_printer ? 2 : 0); |
out_uint32_le(s, printerinfo->default_printer ? 2 : 0); |
202 |
out_uint8s(s, 8); /* unknown */ |
out_uint8s(s, 8); /* unknown */ |
203 |
out_uint32_le(s, driverlen); |
out_uint32_le(s, driverlen); |
204 |
out_uint32_le(s, printerlen); |
out_uint32_le(s, printerlen); |
205 |
out_uint32_le(s, bloblen); |
out_uint32_le(s, bloblen); |
206 |
rdp_out_unistr(s, printerinfo->driver, driverlen - 2); |
rdp_out_unistr(s, printerinfo->driver, driverlen - 2); |
207 |
rdp_out_unistr(s, printerinfo->printer, printerlen - 2); |
rdp_out_unistr(s, printerinfo->printer, printerlen - 2); |
208 |
out_uint8a(s, printerinfo->blob, bloblen); |
out_uint8a(s, printerinfo->blob, bloblen); |
209 |
|
|
210 |
xfree(printerinfo->blob); /* Blob is sent twice if reconnecting */ |
xfree(printerinfo->blob); /* Blob is sent twice if reconnecting */ |
211 |
} |
break; |
212 |
else |
default: |
213 |
{ |
out_uint32(s, 0); |
|
out_uint32(s, 0); |
|
214 |
} |
} |
215 |
} |
} |
216 |
#if 0 |
#if 0 |
288 |
case DEVICE_TYPE_SERIAL: |
case DEVICE_TYPE_SERIAL: |
289 |
|
|
290 |
fns = &serial_fns; |
fns = &serial_fns; |
291 |
rw_blocking = False; |
/* should be async when aio is finished */ |
292 |
|
/*rw_blocking = False; */ |
293 |
break; |
break; |
294 |
|
|
295 |
case DEVICE_TYPE_PARALLEL: |
case DEVICE_TYPE_PARALLEL: |
296 |
|
|
297 |
fns = ¶llel_fns; |
fns = ¶llel_fns; |
298 |
rw_blocking = False; |
/* should be async when aio is finished */ |
299 |
|
/*rw_blocking = False; */ |
300 |
break; |
break; |
301 |
|
|
302 |
case DEVICE_TYPE_PRINTER: |
case DEVICE_TYPE_PRINTER: |