/// <summary> /// Create a TS_WINDOW_CAPABILITYSET type Capability, 2.2.1.1.2 in RDPERP /// Problem: field not implemented in SDK /// Problem: contain hardCode as SDK bug(miss member) /// </summary> /// <param name="wndSupportLevel">0x00000000:The client or server is not capable of supporting Windowing Alternate /// Secondary Drawing Orders.0x00000001: The client or server is capable of supporting Windowing Alternate Secondary /// Drawing Orders. 0x00000002: The client or server is capable of supporting Windowing Alternate Secondary Drawing /// Orders and the following flags: WINDOW_ORDER_FIELD_CLIENTAREASIZE WINDOW_ORDER_FIELD_RPCONTENTWINDOW_ORDER_FIELD_ROOTPARENT</param> /// <param name="numIconCaches">An unsigned 8-bit integer. The number of icon caches requested by the server /// (Demand Active PDU) or supported by the client (Confirm Active PDU).The server maintains an icon cache and refers /// to it to avoid sending duplicate icon information (see section 2.2.1.3.1.2.3). The client also maintains an icon /// cache and refers to it when the server sends across a Cached Icon Window Information Order. </param> /// <param name="numIconCacheEntries">An unsigned 16-bit integer. The number of entries within each icon cache /// requested by the server (Demand Active PDU) or supported by the client (Confirm Active PDU).The server maintains /// an icon cache and refers to it to avoid sending duplicate icon information (see section 2.2.1.3.1.2.3). /// The client also maintains an icon cache and refers to it when the server sends across a Cached Icon Window Information Order.</param> /// <returns>TS_WINDOW_CAPABILITYSET type Capability</returns> public static TS_WINDOW_CAPABILITYSET CreateTSWindowCapSet(UInt32 wndSupportLevel, byte numIconCaches, ushort numIconCacheEntries) { TS_WINDOW_CAPABILITYSET winSet = new TS_WINDOW_CAPABILITYSET(); winSet.rawData = new byte[] { 24, 0, 11, 0, 0, 0, 0, 0, 3, 12, 0 }; //winSet.rawData = new byte[] { 24, 0, 11, 0, 2, 0, 0, 0, 3, 12, 0 }; //CapabilitySetType (2 bytes) //LengthCapability (2 bytes) //WndSupportLevel (4 bytes) if (wndSupportLevel == 1) winSet.rawData[4] = 0x01; if (wndSupportLevel == 2) winSet.rawData[4] = 0x02; //NumIconCaches (1 byte) winSet.rawData[8] = numIconCaches; //NumIconCacheEntries (2 bytes) winSet.rawData[9] = (byte)(numIconCacheEntries & 0xff); winSet.rawData[10] = (byte)(numIconCacheEntries >> 8); return winSet; }
/// <summary> /// Parse TS_WINDOWACTIVATION_CAPABILITYSET /// </summary> /// <param name="data">data to be parsed</param> /// <returns>TS_WINDOWACTIVATION_CAPABILITYSET</returns> private TS_WINDOW_CAPABILITYSET ParseCapsTypeWindow(byte[] data) { TS_WINDOW_CAPABILITYSET set = new TS_WINDOW_CAPABILITYSET(); // TS_WINDOW_CAPABILITYSET: rawData set.rawData = data; return set; }