Window List Capability Set ([MS-RDPERP] section 2.2.1.1.2)
 /// <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_RPCONTENTWINDOW_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;
        }