Home | Info | Community | Development | myReactOS | Contact Us
[static]
Definition at line 465 of file secure.c.
Referenced by sec_connect(), and sec_reconnect().
{ int hostlen = 2 * strlen(g_hostname); int length = 158 + 76 + 12 + 4; unsigned int i; if (g_num_channels > 0) length += g_num_channels * 12 + 8; if (hostlen > 30) hostlen = 30; /* Generic Conference Control (T.124) ConferenceCreateRequest */ out_uint16_be(s, 5); out_uint16_be(s, 0x14); out_uint8(s, 0x7c); out_uint16_be(s, 1); out_uint16_be(s, (length | 0x8000)); /* remaining length */ out_uint16_be(s, 8); /* length? */ out_uint16_be(s, 16); out_uint8(s, 0); out_uint16_le(s, 0xc001); out_uint8(s, 0); out_uint32_le(s, 0x61637544); /* OEM ID: "Duca", as in Ducati. */ out_uint16_be(s, ((length - 14) | 0x8000)); /* remaining length */ /* Client information */ out_uint16_le(s, SEC_TAG_CLI_INFO); out_uint16_le(s, 212); /* length */ out_uint16_le(s, g_use_rdp5 ? 4 : 1); /* RDP version. 1 == RDP4, 4 == RDP5. */ out_uint16_le(s, 8); out_uint16_le(s, g_width); out_uint16_le(s, g_height); out_uint16_le(s, 0xca01); out_uint16_le(s, 0xaa03); out_uint32_le(s, g_keylayout); out_uint32_le(s, 2600); /* Client build. We are now 2600 compatible :-) */ /* Unicode name of client, padded to 32 bytes */ rdp_out_unistr(s, g_hostname, hostlen); out_uint8s(s, 30 - hostlen); /* See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceddk40/html/cxtsksupportingremotedesktopprotocol.asp */ out_uint32_le(s, g_keyboard_type); out_uint32_le(s, g_keyboard_subtype); out_uint32_le(s, g_keyboard_functionkeys); out_uint8s(s, 64); /* reserved? 4 + 12 doublewords */ out_uint16_le(s, 0xca01); /* colour depth? */ out_uint16_le(s, 1); out_uint32(s, 0); out_uint8(s, g_server_depth); out_uint16_le(s, 0x0700); out_uint8(s, 0); out_uint32_le(s, 1); out_uint8s(s, 64); /* End of client info */ out_uint16_le(s, SEC_TAG_CLI_4); out_uint16_le(s, 12); out_uint32_le(s, g_console_session ? 0xb : 9); out_uint32(s, 0); /* Client encryption settings */ out_uint16_le(s, SEC_TAG_CLI_CRYPT); out_uint16_le(s, 12); /* length */ out_uint32_le(s, g_encryption ? 0x3 : 0); /* encryption supported, 128-bit supported */ out_uint32(s, 0); /* Unknown */ DEBUG_RDP5(("g_num_channels is %d\n", g_num_channels)); if (g_num_channels > 0) { out_uint16_le(s, SEC_TAG_CLI_CHANNELS); out_uint16_le(s, g_num_channels * 12 + 8); /* length */ out_uint32_le(s, g_num_channels); /* number of virtual channels */ for (i = 0; i < g_num_channels; i++) { DEBUG_RDP5(("Requesting channel %s\n", g_channels[i].name)); out_uint8a(s, g_channels[i].name, 8); out_uint32_be(s, g_channels[i].flags); } } s_mark_end(s); }