Merge pull request #96 from derfian/decipher-rdpdr-printer-device-announce
Clarify printer parts of rdpdr_send_client_device_list_announce
This commit is contained in:
commit
d124477abb
@ -514,6 +514,11 @@ enum RDP_INPUT_DEVICE
|
||||
#define RDPDR_IRP_MJ_SET_SECURITY 0x00008000
|
||||
#define ALL_RDPDR_IRP_MJ 0x0000FFFF
|
||||
|
||||
#define RDPDR_PRINTER_ANNOUNCE_FLAG_ASCII 0x00000001
|
||||
#define RDPDR_PRINTER_ANNOUNCE_FLAG_DEFAULTPRINTER 0x00000002
|
||||
#define RDPDR_PRINTER_ANNOUNCE_FLAG_NETWORKPRINTER 0x00000004
|
||||
#define RDPDR_PRINTER_ANNOUNCE_FLAG_TSPRINTER 0x00000008
|
||||
#define RDPDR_PRINTER_ANNOUNCE_FLAG_XPSFORMAT 0x00000010
|
||||
|
||||
#define RDPDR_DEVICE_REMOVE_PDUS 0x00000001
|
||||
#define RDPDR_CLIENT_DISPLAY_NAME_PDU 0x00000002
|
||||
|
25
rdpdr.c
25
rdpdr.c
@ -274,7 +274,7 @@ static void
|
||||
rdpdr_send_client_device_list_announce(void)
|
||||
{
|
||||
/* DR_CORE_CLIENT_ANNOUNCE_RSP */
|
||||
uint32 driverlen, printerlen, bloblen, disklen;
|
||||
uint32 driverlen, printerlen, bloblen, disklen, flags;
|
||||
int i;
|
||||
STREAM s;
|
||||
PRINTER *printerinfo;
|
||||
@ -313,16 +313,21 @@ rdpdr_send_client_device_list_announce(void)
|
||||
driverlen = 2 * strlen(printerinfo->driver) + 2;
|
||||
printerlen = 2 * strlen(printerinfo->printer) + 2;
|
||||
bloblen = printerinfo->bloblen;
|
||||
flags = 0;
|
||||
if (printerinfo->default_printer)
|
||||
flags |= RDPDR_PRINTER_ANNOUNCE_FLAG_DEFAULTPRINTER;
|
||||
|
||||
out_uint32_le(s, 24 + driverlen + printerlen + bloblen); /* length of extra info */
|
||||
out_uint32_le(s, printerinfo->default_printer ? 2 : 0);
|
||||
out_uint8s(s, 8); /* unknown */
|
||||
out_uint32_le(s, driverlen);
|
||||
out_uint32_le(s, printerlen);
|
||||
out_uint32_le(s, bloblen);
|
||||
rdp_out_unistr(s, printerinfo->driver, driverlen - 2);
|
||||
rdp_out_unistr(s, printerinfo->printer, printerlen - 2);
|
||||
out_uint8a(s, printerinfo->blob, bloblen);
|
||||
out_uint32_le(s, 24 + driverlen + printerlen + bloblen); /* DeviceDataLength */
|
||||
out_uint32_le(s, flags); /* Flags */
|
||||
out_uint32_le(s, 0); /* Codepage */
|
||||
out_uint32_le(s, 0); /* PnPNameLen */
|
||||
out_uint32_le(s, driverlen); /* DriverNameLen */
|
||||
out_uint32_le(s, printerlen); /* PrinterNameLen */
|
||||
out_uint32_le(s, bloblen); /* CachedFieldsLen */
|
||||
rdp_out_unistr(s, NULL, 0); /* PnPName */
|
||||
rdp_out_unistr(s, printerinfo->driver, driverlen - 2); /* DriverName */
|
||||
rdp_out_unistr(s, printerinfo->printer, printerlen - 2); /* PrinterName */
|
||||
out_uint8a(s, printerinfo->blob, bloblen); /* CachedPrinterConfigData */
|
||||
|
||||
if (printerinfo->blob)
|
||||
xfree(printerinfo->blob); /* Blob is sent twice if reconnecting */
|
||||
|
Loading…
Reference in New Issue
Block a user