]> git.sesse.net Git - rdpsrv/blobdiff - rdp.c
Add function for sending bitmap updates (not working yet :-/)
[rdpsrv] / rdp.c
diff --git a/rdp.c b/rdp.c
index eafd3d0da7fae6e2506951723366e64fcd9c8355..52ea0093ea48b073d63590c9206fd51ef6c877d6 100644 (file)
--- a/rdp.c
+++ b/rdp.c
@@ -80,7 +80,7 @@ rdp_recv(uint8 * type)
 }
 
 /* Initialise an RDP data packet */
-static STREAM
+STREAM
 rdp_init_data(int maxlen)
 {
        STREAM s;
@@ -92,7 +92,7 @@ rdp_init_data(int maxlen)
 }
 
 /* Send an RDP data packet */
-static void
+void
 rdp_send_data(STREAM s, uint8 data_pdu_type)
 {
        uint16 length;
@@ -148,6 +148,44 @@ rdp_in_unistr(STREAM s, char *string, int len)
        s->p += len;
 }
 
+void rdp_send_bitmap_update(void)
+{
+       STREAM s;
+
+       s = rdp_init_data(11*2 + 2*2*3);
+       out_uint16_le(s, RDP_UPDATE_BITMAP);
+       out_uint16_le(s, 1); // one update
+       out_uint16_le(s, 1); // left, top, right, bottom
+       out_uint16_le(s, 2);
+       out_uint16_le(s, 3);
+       out_uint16_le(s, 4);
+       out_uint16_le(s, 2); // width, height
+       out_uint16_le(s, 2);
+       out_uint16_le(s, 24); // bpp
+       out_uint16_le(s, 0); // no compression
+       out_uint16_le(s, 2*2*3); // bufsize
+
+       out_uint8(s, 255);
+       out_uint8(s, 0);
+       out_uint8(s, 0);
+
+       out_uint8(s, 0);
+       out_uint8(s, 255);
+       out_uint8(s, 0);
+
+       out_uint8(s, 0);
+       out_uint8(s, 0);
+       out_uint8(s, 255);
+
+       out_uint8(s, 255);
+       out_uint8(s, 255);
+       out_uint8(s, 255);
+
+       s_mark_end(s);
+       rdp_send_data(s, RDP_DATA_PDU_UPDATE);
+}
+
+
 void
 rdp_get_logon_info(STREAM s)
 {