#define TAG FREERDP_TAG("core.capabilities")
-const char* const CAPSET_TYPE_STRINGS[] =
-{
- "Unknown",
- "General",
- "Bitmap",
- "Order",
- "Bitmap Cache",
- "Control",
- "Unknown",
- "Window Activation",
- "Pointer",
- "Share",
- "Color Cache",
- "Unknown",
- "Sound",
- "Input",
- "Font",
- "Brush",
- "Glyph Cache",
- "Offscreen Bitmap Cache",
- "Bitmap Cache Host Support",
- "Bitmap Cache v2",
- "Virtual Channel",
- "DrawNineGrid Cache",
- "Draw GDI+ Cache",
- "Remote Programs",
- "Window List",
- "Desktop Composition",
- "Multifragment Update",
- "Large Pointer",
- "Surface Commands",
- "Bitmap Codecs",
- "Frame Acknowledge"
+static const char* const CAPSET_TYPE_STRINGS[] =
+{
+ "Unknown",
+ "General",
+ "Bitmap",
+ "Order",
+ "Bitmap Cache",
+ "Control",
+ "Unknown",
+ "Window Activation",
+ "Pointer",
+ "Share",
+ "Color Cache",
+ "Unknown",
+ "Sound",
+ "Input",
+ "Font",
+ "Brush",
+ "Glyph Cache",
+ "Offscreen Bitmap Cache",
+ "Bitmap Cache Host Support",
+ "Bitmap Cache v2",
+ "Virtual Channel",
+ "DrawNineGrid Cache",
+ "Draw GDI+ Cache",
+ "Remote Programs",
+ "Window List",
+ "Desktop Composition",
+ "Multifragment Update",
+ "Large Pointer",
+ "Surface Commands",
+ "Bitmap Codecs",
+ "Frame Acknowledge"
};
-static const char *get_capability_name(UINT16 type)
+static const char* get_capability_name(UINT16 type)
{
if (type > CAPSET_TYPE_FRAME_ACKNOWLEDGE)
return "<unknown>";
return CAPSET_TYPE_STRINGS[type];
}
-BOOL rdp_print_capability_sets(wStream* s, UINT16 numberCapabilities, BOOL receiving);
+static BOOL rdp_print_capability_sets(wStream* s, UINT16 numberCapabilities,
+ BOOL receiving);
/* CODEC_GUID_REMOTEFX: 0x76772F12BD724463AFB3B73C9C6F7886 */
-GUID CODEC_GUID_REMOTEFX =
+static const GUID CODEC_GUID_REMOTEFX =
{
0x76772F12,
0xBD72, 0x4463,
/* CODEC_GUID_NSCODEC 0xCA8D1BB9000F154F589FAE2D1A87E2D6 */
-GUID CODEC_GUID_NSCODEC =
+static const GUID CODEC_GUID_NSCODEC =
{
0xCA8D1BB9,
0x000F, 0x154F,
/* CODEC_GUID_IGNORE 0x9C4351A6353542AE910CCDFCE5760B58 */
-GUID CODEC_GUID_IGNORE =
+static const GUID CODEC_GUID_IGNORE =
{
0x9C4351A6,
0x3535, 0x42AE,
/* CODEC_GUID_IMAGE_REMOTEFX 0x2744CCD49D8A4E74803C0ECBEEA19C54 */
-GUID CODEC_GUID_IMAGE_REMOTEFX =
+static const GUID CODEC_GUID_IMAGE_REMOTEFX =
{
0x2744CCD4,
0x9D8A, 0x4E74,
/* CODEC_GUID_JPEG 0x430C9EED1BAF4CE6869ACB8B37B66237 */
-GUID CODEC_GUID_JPEG =
+static const GUID CODEC_GUID_JPEG =
{
0x430C9EED,
0x1BAF, 0x4CE6,
{ 0x86, 0x9A, 0xCB, 0x8B, 0x37, 0xB6, 0x62, 0x37 }
};
-void rdp_read_capability_set_header(wStream* s, UINT16* length, UINT16* type)
+static void rdp_read_capability_set_header(wStream* s, UINT16* length,
+ UINT16* type)
{
Stream_Read_UINT16(s, *type); /* capabilitySetType */
Stream_Read_UINT16(s, *length); /* lengthCapability */
}
-void rdp_write_capability_set_header(wStream* s, UINT16 length, UINT16 type)
+static void rdp_write_capability_set_header(wStream* s, UINT16 length,
+ UINT16 type)
{
Stream_Write_UINT16(s, type); /* capabilitySetType */
Stream_Write_UINT16(s, length); /* lengthCapability */
}
-int rdp_capability_set_start(wStream* s)
+static int rdp_capability_set_start(wStream* s)
{
int header;
-
header = Stream_GetPosition(s);
Stream_Zero(s, CAPSET_HEADER_LENGTH);
-
return header;
}
-void rdp_capability_set_finish(wStream* s, int header, UINT16 type)
+static void rdp_capability_set_finish(wStream* s, int header, UINT16 type)
{
int footer;
UINT16 length;
-
footer = Stream_GetPosition(s);
length = footer - header;
Stream_SetPosition(s, header);
-
rdp_write_capability_set_header(s, length, type);
Stream_SetPosition(s, footer);
}
* @return if the operation completed successfully
*/
-BOOL rdp_read_general_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_general_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
UINT16 extraFlags;
BYTE refreshRectSupport;
Stream_Seek_UINT16(s); /* remoteUnshareFlag (2 bytes) */
Stream_Seek_UINT16(s); /* generalCompressionLevel (2 bytes) */
Stream_Read_UINT8(s, refreshRectSupport); /* refreshRectSupport (1 byte) */
- Stream_Read_UINT8(s, suppressOutputSupport); /* suppressOutputSupport (1 byte) */
-
- settings->NoBitmapCompressionHeader = (extraFlags & NO_BITMAP_COMPRESSION_HDR) ? TRUE : FALSE;
+ Stream_Read_UINT8(s,
+ suppressOutputSupport); /* suppressOutputSupport (1 byte) */
+ settings->NoBitmapCompressionHeader = (extraFlags & NO_BITMAP_COMPRESSION_HDR) ?
+ TRUE : FALSE;
if (!(extraFlags & FASTPATH_OUTPUT_SUPPORTED))
settings->FastPathOutput = FALSE;
if (!(extraFlags & ENC_SALTED_CHECKSUM))
settings->SaltedChecksum = FALSE;
-
if (!settings->ServerMode)
{
/**
* @param settings settings
*/
-BOOL rdp_write_general_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_general_capability_set(wStream* s, rdpSettings* settings)
{
int header;
UINT16 extraFlags;
return FALSE;
header = rdp_capability_set_start(s);
-
extraFlags = LONG_CREDENTIALS_SUPPORTED;
if (settings->NoBitmapCompressionHeader)
Stream_Write_UINT16(s, 0); /* remoteUnshareFlag (2 bytes) */
Stream_Write_UINT16(s, 0); /* generalCompressionLevel (2 bytes) */
Stream_Write_UINT8(s, settings->RefreshRect); /* refreshRectSupport (1 byte) */
- Stream_Write_UINT8(s, settings->SuppressOutput); /* suppressOutputSupport (1 byte) */
-
+ Stream_Write_UINT8(s,
+ settings->SuppressOutput); /* suppressOutputSupport (1 byte) */
rdp_capability_set_finish(s, header, CAPSET_TYPE_GENERAL);
return TRUE;
}
-BOOL rdp_print_general_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_general_capability_set(wStream* s, UINT16 length)
{
UINT16 osMajorType;
UINT16 osMinorType;
Stream_Read_UINT16(s, osMinorType); /* osMinorType (2 bytes) */
Stream_Read_UINT16(s, protocolVersion); /* protocolVersion (2 bytes) */
Stream_Read_UINT16(s, pad2OctetsA); /* pad2OctetsA (2 bytes) */
- Stream_Read_UINT16(s, generalCompressionTypes); /* generalCompressionTypes (2 bytes) */
+ Stream_Read_UINT16(s,
+ generalCompressionTypes); /* generalCompressionTypes (2 bytes) */
Stream_Read_UINT16(s, extraFlags); /* extraFlags (2 bytes) */
- Stream_Read_UINT16(s, updateCapabilityFlag); /* updateCapabilityFlag (2 bytes) */
+ Stream_Read_UINT16(s,
+ updateCapabilityFlag); /* updateCapabilityFlag (2 bytes) */
Stream_Read_UINT16(s, remoteUnshareFlag); /* remoteUnshareFlag (2 bytes) */
- Stream_Read_UINT16(s, generalCompressionLevel); /* generalCompressionLevel (2 bytes) */
+ Stream_Read_UINT16(s,
+ generalCompressionLevel); /* generalCompressionLevel (2 bytes) */
Stream_Read_UINT8(s, refreshRectSupport); /* refreshRectSupport (1 byte) */
- Stream_Read_UINT8(s, suppressOutputSupport); /* suppressOutputSupport (1 byte) */
+ Stream_Read_UINT8(s,
+ suppressOutputSupport); /* suppressOutputSupport (1 byte) */
WLog_INFO(TAG, "\tosMajorType: 0x%04X", osMajorType);
WLog_INFO(TAG, "\tosMinorType: 0x%04X", osMinorType);
WLog_INFO(TAG, "\tprotocolVersion: 0x%04X", protocolVersion);
* @return if the operation completed successfully
*/
-BOOL rdp_read_bitmap_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_bitmap_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
BYTE drawingFlags;
UINT16 desktopWidth;
if (length < 28)
return FALSE;
- Stream_Read_UINT16(s, preferredBitsPerPixel); /* preferredBitsPerPixel (2 bytes) */
+ Stream_Read_UINT16(s,
+ preferredBitsPerPixel); /* preferredBitsPerPixel (2 bytes) */
Stream_Seek_UINT16(s); /* receive1BitPerPixel (2 bytes) */
Stream_Seek_UINT16(s); /* receive4BitsPerPixel (2 bytes) */
Stream_Seek_UINT16(s); /* receive8BitsPerPixel (2 bytes) */
}
if (settings->DrawAllowSkipAlpha)
- settings->DrawAllowSkipAlpha = (drawingFlags & DRAW_ALLOW_SKIP_ALPHA) ? TRUE : FALSE;
+ settings->DrawAllowSkipAlpha = (drawingFlags & DRAW_ALLOW_SKIP_ALPHA) ? TRUE :
+ FALSE;
if (settings->DrawAllowDynamicColorFidelity)
- settings->DrawAllowDynamicColorFidelity = (drawingFlags & DRAW_ALLOW_DYNAMIC_COLOR_FIDELITY) ? TRUE : FALSE;
+ settings->DrawAllowDynamicColorFidelity = (drawingFlags &
+ DRAW_ALLOW_DYNAMIC_COLOR_FIDELITY) ? TRUE : FALSE;
if (settings->DrawAllowColorSubsampling)
- settings->DrawAllowColorSubsampling = (drawingFlags & DRAW_ALLOW_COLOR_SUBSAMPLING) ? TRUE : FALSE;
+ settings->DrawAllowColorSubsampling = (drawingFlags &
+ DRAW_ALLOW_COLOR_SUBSAMPLING) ? TRUE : FALSE;
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_bitmap_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_bitmap_capability_set(wStream* s, rdpSettings* settings)
{
int header;
BYTE drawingFlags = 0;
else
preferredBitsPerPixel = 8;
-
- Stream_Write_UINT16(s, preferredBitsPerPixel); /* preferredBitsPerPixel (2 bytes) */
+ Stream_Write_UINT16(s,
+ preferredBitsPerPixel); /* preferredBitsPerPixel (2 bytes) */
Stream_Write_UINT16(s, 1); /* receive1BitPerPixel (2 bytes) */
Stream_Write_UINT16(s, 1); /* receive4BitsPerPixel (2 bytes) */
Stream_Write_UINT16(s, 1); /* receive8BitsPerPixel (2 bytes) */
Stream_Write_UINT16(s, settings->DesktopWidth); /* desktopWidth (2 bytes) */
Stream_Write_UINT16(s, settings->DesktopHeight); /* desktopHeight (2 bytes) */
Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */
- Stream_Write_UINT16(s, settings->DesktopResize); /* desktopResizeFlag (2 bytes) */
+ Stream_Write_UINT16(s,
+ settings->DesktopResize); /* desktopResizeFlag (2 bytes) */
Stream_Write_UINT16(s, 1); /* bitmapCompressionFlag (2 bytes) */
Stream_Write_UINT8(s, 0); /* highColorFlags (1 byte) */
Stream_Write_UINT8(s, drawingFlags); /* drawingFlags (1 byte) */
Stream_Write_UINT16(s, 1); /* multipleRectangleSupport (2 bytes) */
Stream_Write_UINT16(s, 0); /* pad2OctetsB (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_BITMAP);
return TRUE;
}
-BOOL rdp_print_bitmap_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_bitmap_capability_set(wStream* s, UINT16 length)
{
UINT16 preferredBitsPerPixel;
UINT16 receive1BitPerPixel;
if (length < 28)
return FALSE;
- Stream_Read_UINT16(s, preferredBitsPerPixel); /* preferredBitsPerPixel (2 bytes) */
+ Stream_Read_UINT16(s,
+ preferredBitsPerPixel); /* preferredBitsPerPixel (2 bytes) */
Stream_Read_UINT16(s, receive1BitPerPixel); /* receive1BitPerPixel (2 bytes) */
- Stream_Read_UINT16(s, receive4BitsPerPixel); /* receive4BitsPerPixel (2 bytes) */
- Stream_Read_UINT16(s, receive8BitsPerPixel); /* receive8BitsPerPixel (2 bytes) */
+ Stream_Read_UINT16(s,
+ receive4BitsPerPixel); /* receive4BitsPerPixel (2 bytes) */
+ Stream_Read_UINT16(s,
+ receive8BitsPerPixel); /* receive8BitsPerPixel (2 bytes) */
Stream_Read_UINT16(s, desktopWidth); /* desktopWidth (2 bytes) */
Stream_Read_UINT16(s, desktopHeight); /* desktopHeight (2 bytes) */
Stream_Read_UINT16(s, pad2Octets); /* pad2Octets (2 bytes) */
Stream_Read_UINT16(s, desktopResizeFlag); /* desktopResizeFlag (2 bytes) */
- Stream_Read_UINT16(s, bitmapCompressionFlag); /* bitmapCompressionFlag (2 bytes) */
+ Stream_Read_UINT16(s,
+ bitmapCompressionFlag); /* bitmapCompressionFlag (2 bytes) */
Stream_Read_UINT8(s, highColorFlags); /* highColorFlags (1 byte) */
Stream_Read_UINT8(s, drawingFlags); /* drawingFlags (1 byte) */
- Stream_Read_UINT16(s, multipleRectangleSupport); /* multipleRectangleSupport (2 bytes) */
+ Stream_Read_UINT16(s,
+ multipleRectangleSupport); /* multipleRectangleSupport (2 bytes) */
Stream_Read_UINT16(s, pad2OctetsB); /* pad2OctetsB (2 bytes) */
WLog_INFO(TAG, "\tpreferredBitsPerPixel: 0x%04X", preferredBitsPerPixel);
WLog_INFO(TAG, "\treceive1BitPerPixel: 0x%04X", receive1BitPerPixel);
* @return if the operation completed successfully
*/
-BOOL rdp_read_order_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_order_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
int i;
UINT16 orderFlags;
textANSICodePage = 65001; /* Unicode (UTF-8) */
orderSupportExFlags = 0;
- orderFlags = NEGOTIATE_ORDER_SUPPORT | ZERO_BOUNDS_DELTA_SUPPORT | COLOR_INDEX_SUPPORT;
+ orderFlags = NEGOTIATE_ORDER_SUPPORT | ZERO_BOUNDS_DELTA_SUPPORT |
+ COLOR_INDEX_SUPPORT;
if (settings->BitmapCacheV3Enabled)
{
Stream_Write_UINT16(s, 0); /* pad2OctetsD (2 bytes) */
Stream_Write_UINT16(s, textANSICodePage); /* textANSICodePage (2 bytes) */
Stream_Write_UINT16(s, 0); /* pad2OctetsE (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_ORDER);
return TRUE;
}
-BOOL rdp_print_order_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_order_capability_set(wStream* s, UINT16 length)
{
BYTE terminalDescriptor[16];
UINT32 pad4OctetsA;
Stream_Read(s, terminalDescriptor, 16); /* terminalDescriptor (16 bytes) */
Stream_Read_UINT32(s, pad4OctetsA); /* pad4OctetsA (4 bytes) */
- Stream_Read_UINT16(s, desktopSaveXGranularity); /* desktopSaveXGranularity (2 bytes) */
- Stream_Read_UINT16(s, desktopSaveYGranularity); /* desktopSaveYGranularity (2 bytes) */
+ Stream_Read_UINT16(s,
+ desktopSaveXGranularity); /* desktopSaveXGranularity (2 bytes) */
+ Stream_Read_UINT16(s,
+ desktopSaveYGranularity); /* desktopSaveYGranularity (2 bytes) */
Stream_Read_UINT16(s, pad2OctetsA); /* pad2OctetsA (2 bytes) */
Stream_Read_UINT16(s, maximumOrderLevel); /* maximumOrderLevel (2 bytes) */
Stream_Read_UINT16(s, numberFonts); /* numberFonts (2 bytes) */
WLog_INFO(TAG, "\t\tAEXTTEXTOUT: %d", orderSupport[NEG_AEXTTEXTOUT_INDEX]);
WLog_INFO(TAG, "\t\tDRAWNINEGRID: %d", orderSupport[NEG_DRAWNINEGRID_INDEX]);
WLog_INFO(TAG, "\t\tLINETO: %d", orderSupport[NEG_LINETO_INDEX]);
- WLog_INFO(TAG, "\t\tMULTI_DRAWNINEGRID: %d", orderSupport[NEG_MULTI_DRAWNINEGRID_INDEX]);
+ WLog_INFO(TAG, "\t\tMULTI_DRAWNINEGRID: %d",
+ orderSupport[NEG_MULTI_DRAWNINEGRID_INDEX]);
WLog_INFO(TAG, "\t\tOPAQUE_RECT: %d", orderSupport[NEG_OPAQUE_RECT_INDEX]);
WLog_INFO(TAG, "\t\tSAVEBITMAP: %d", orderSupport[NEG_SAVEBITMAP_INDEX]);
WLog_INFO(TAG, "\t\tWTEXTOUT: %d", orderSupport[NEG_WTEXTOUT_INDEX]);
WLog_INFO(TAG, "\t\tMULTIDSTBLT: %d", orderSupport[NEG_MULTIDSTBLT_INDEX]);
WLog_INFO(TAG, "\t\tMULTIPATBLT: %d", orderSupport[NEG_MULTIPATBLT_INDEX]);
WLog_INFO(TAG, "\t\tMULTISCRBLT: %d", orderSupport[NEG_MULTISCRBLT_INDEX]);
- WLog_INFO(TAG, "\t\tMULTIOPAQUERECT: %d", orderSupport[NEG_MULTIOPAQUERECT_INDEX]);
+ WLog_INFO(TAG, "\t\tMULTIOPAQUERECT: %d",
+ orderSupport[NEG_MULTIOPAQUERECT_INDEX]);
WLog_INFO(TAG, "\t\tFAST_INDEX: %d", orderSupport[NEG_FAST_INDEX_INDEX]);
WLog_INFO(TAG, "\t\tPOLYGON_SC: %d", orderSupport[NEG_POLYGON_SC_INDEX]);
WLog_INFO(TAG, "\t\tPOLYGON_CB: %d", orderSupport[NEG_POLYGON_CB_INDEX]);
WLog_INFO(TAG, "\t\tELLIPSE_SC: %d", orderSupport[NEG_ELLIPSE_SC_INDEX]);
WLog_INFO(TAG, "\t\tELLIPSE_CB: %d", orderSupport[NEG_ELLIPSE_CB_INDEX]);
WLog_INFO(TAG, "\t\tGLYPH_INDEX: %d", orderSupport[NEG_GLYPH_INDEX_INDEX]);
- WLog_INFO(TAG, "\t\tGLYPH_WEXTTEXTOUT: %d", orderSupport[NEG_GLYPH_WEXTTEXTOUT_INDEX]);
- WLog_INFO(TAG, "\t\tGLYPH_WLONGTEXTOUT: %d", orderSupport[NEG_GLYPH_WLONGTEXTOUT_INDEX]);
- WLog_INFO(TAG, "\t\tGLYPH_WLONGEXTTEXTOUT: %d", orderSupport[NEG_GLYPH_WLONGEXTTEXTOUT_INDEX]);
+ WLog_INFO(TAG, "\t\tGLYPH_WEXTTEXTOUT: %d",
+ orderSupport[NEG_GLYPH_WEXTTEXTOUT_INDEX]);
+ WLog_INFO(TAG, "\t\tGLYPH_WLONGTEXTOUT: %d",
+ orderSupport[NEG_GLYPH_WLONGTEXTOUT_INDEX]);
+ WLog_INFO(TAG, "\t\tGLYPH_WLONGEXTTEXTOUT: %d",
+ orderSupport[NEG_GLYPH_WLONGEXTTEXTOUT_INDEX]);
WLog_INFO(TAG, "\t\tUNUSED31: %d", orderSupport[NEG_UNUSED31_INDEX]);
WLog_INFO(TAG, "\ttextFlags: 0x%04X", textFlags);
WLog_INFO(TAG, "\torderSupportExFlags: 0x%04X", orderSupportExFlags);
* @return if the operation completed successfully
*/
-BOOL rdp_read_bitmap_cache_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_bitmap_cache_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length < 40)
return FALSE;
Stream_Seek_UINT16(s); /* Cache1MaximumCellSize (2 bytes) */
Stream_Seek_UINT16(s); /* Cache2Entries (2 bytes) */
Stream_Seek_UINT16(s); /* Cache2MaximumCellSize (2 bytes) */
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_bitmap_cache_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_bitmap_cache_capability_set(wStream* s,
+ rdpSettings* settings)
{
int bpp;
int header;
return FALSE;
header = rdp_capability_set_start(s);
-
bpp = (settings->ColorDepth + 7) / 8;
-
Stream_Write_UINT32(s, 0); /* pad1 (4 bytes) */
Stream_Write_UINT32(s, 0); /* pad2 (4 bytes) */
Stream_Write_UINT32(s, 0); /* pad3 (4 bytes) */
Stream_Write_UINT32(s, 0); /* pad4 (4 bytes) */
Stream_Write_UINT32(s, 0); /* pad5 (4 bytes) */
Stream_Write_UINT32(s, 0); /* pad6 (4 bytes) */
-
size = bpp * 256;
Stream_Write_UINT16(s, 200); /* Cache0Entries (2 bytes) */
Stream_Write_UINT16(s, size); /* Cache0MaximumCellSize (2 bytes) */
-
size = bpp * 1024;
Stream_Write_UINT16(s, 600); /* Cache1Entries (2 bytes) */
Stream_Write_UINT16(s, size); /* Cache1MaximumCellSize (2 bytes) */
-
size = bpp * 4096;
Stream_Write_UINT16(s, 1000); /* Cache2Entries (2 bytes) */
Stream_Write_UINT16(s, size); /* Cache2MaximumCellSize (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_BITMAP_CACHE);
return TRUE;
}
-BOOL rdp_print_bitmap_cache_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_bitmap_cache_capability_set(wStream* s, UINT16 length)
{
UINT32 pad1, pad2, pad3;
UINT32 pad4, pad5, pad6;
Stream_Read_UINT32(s, pad5); /* pad5 (4 bytes) */
Stream_Read_UINT32(s, pad6); /* pad6 (4 bytes) */
Stream_Read_UINT16(s, Cache0Entries); /* Cache0Entries (2 bytes) */
- Stream_Read_UINT16(s, Cache0MaximumCellSize); /* Cache0MaximumCellSize (2 bytes) */
+ Stream_Read_UINT16(s,
+ Cache0MaximumCellSize); /* Cache0MaximumCellSize (2 bytes) */
Stream_Read_UINT16(s, Cache1Entries); /* Cache1Entries (2 bytes) */
- Stream_Read_UINT16(s, Cache1MaximumCellSize); /* Cache1MaximumCellSize (2 bytes) */
+ Stream_Read_UINT16(s,
+ Cache1MaximumCellSize); /* Cache1MaximumCellSize (2 bytes) */
Stream_Read_UINT16(s, Cache2Entries); /* Cache2Entries (2 bytes) */
- Stream_Read_UINT16(s, Cache2MaximumCellSize); /* Cache2MaximumCellSize (2 bytes) */
+ Stream_Read_UINT16(s,
+ Cache2MaximumCellSize); /* Cache2MaximumCellSize (2 bytes) */
WLog_INFO(TAG, "\tpad1: 0x%08X", pad1);
WLog_INFO(TAG, "\tpad2: 0x%08X", pad2);
WLog_INFO(TAG, "\tpad3: 0x%08X", pad3);
* @return if the operation completed successfully
*/
-BOOL rdp_read_control_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_control_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length < 12)
return FALSE;
Stream_Seek_UINT16(s); /* remoteDetachFlag (2 bytes) */
Stream_Seek_UINT16(s); /* controlInterest (2 bytes) */
Stream_Seek_UINT16(s); /* detachInterest (2 bytes) */
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_control_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_control_capability_set(wStream* s, rdpSettings* settings)
{
int header;
return FALSE;
header = rdp_capability_set_start(s);
-
Stream_Write_UINT16(s, 0); /* controlFlags (2 bytes) */
Stream_Write_UINT16(s, 0); /* remoteDetachFlag (2 bytes) */
Stream_Write_UINT16(s, 2); /* controlInterest (2 bytes) */
Stream_Write_UINT16(s, 2); /* detachInterest (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_CONTROL);
return TRUE;
}
-BOOL rdp_print_control_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_control_capability_set(wStream* s, UINT16 length)
{
UINT16 controlFlags;
UINT16 remoteDetachFlag;
* @return if the operation completed successfully
*/
-BOOL rdp_read_window_activation_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_window_activation_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length < 12)
return FALSE;
Stream_Seek_UINT16(s); /* helpKeyIndexFlag (2 bytes) */
Stream_Seek_UINT16(s); /* helpExtendedKeyFlag (2 bytes) */
Stream_Seek_UINT16(s); /* windowManagerKeyFlag (2 bytes) */
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_window_activation_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_window_activation_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
return FALSE;
header = rdp_capability_set_start(s);
-
Stream_Write_UINT16(s, 0); /* helpKeyFlag (2 bytes) */
Stream_Write_UINT16(s, 0); /* helpKeyIndexFlag (2 bytes) */
Stream_Write_UINT16(s, 0); /* helpExtendedKeyFlag (2 bytes) */
Stream_Write_UINT16(s, 0); /* windowManagerKeyFlag (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_ACTIVATION);
return TRUE;
}
-BOOL rdp_print_window_activation_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_window_activation_capability_set(wStream* s,
+ UINT16 length)
{
UINT16 helpKeyFlag;
UINT16 helpKeyIndexFlag;
Stream_Read_UINT16(s, helpKeyFlag); /* helpKeyFlag (2 bytes) */
Stream_Read_UINT16(s, helpKeyIndexFlag); /* helpKeyIndexFlag (2 bytes) */
Stream_Read_UINT16(s, helpExtendedKeyFlag); /* helpExtendedKeyFlag (2 bytes) */
- Stream_Read_UINT16(s, windowManagerKeyFlag); /* windowManagerKeyFlag (2 bytes) */
+ Stream_Read_UINT16(s,
+ windowManagerKeyFlag); /* windowManagerKeyFlag (2 bytes) */
WLog_INFO(TAG, "\thelpKeyFlag: 0x%04X", helpKeyFlag);
WLog_INFO(TAG, "\thelpKeyIndexFlag: 0x%04X", helpKeyIndexFlag);
WLog_INFO(TAG, "\thelpExtendedKeyFlag: 0x%04X", helpExtendedKeyFlag);
* @return if the operation completed successfully
*/
-BOOL rdp_read_pointer_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_pointer_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
UINT16 colorPointerFlag;
UINT16 colorPointerCacheSize;
return FALSE;
Stream_Read_UINT16(s, colorPointerFlag); /* colorPointerFlag (2 bytes) */
- Stream_Read_UINT16(s, colorPointerCacheSize); /* colorPointerCacheSize (2 bytes) */
+ Stream_Read_UINT16(s,
+ colorPointerCacheSize); /* colorPointerCacheSize (2 bytes) */
/* pointerCacheSize is optional */
if (length >= 10)
{
settings->PointerCacheSize = pointerCacheSize;
}
+
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_pointer_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_pointer_capability_set(wStream* s, rdpSettings* settings)
{
int header;
UINT16 colorPointerFlag;
return FALSE;
header = rdp_capability_set_start(s);
-
colorPointerFlag = (settings->ColorPointerFlag) ? 1 : 0;
-
Stream_Write_UINT16(s, colorPointerFlag); /* colorPointerFlag (2 bytes) */
- Stream_Write_UINT16(s, settings->PointerCacheSize); /* colorPointerCacheSize (2 bytes) */
+ Stream_Write_UINT16(s,
+ settings->PointerCacheSize); /* colorPointerCacheSize (2 bytes) */
if (settings->LargePointerFlag)
{
- Stream_Write_UINT16(s, settings->PointerCacheSize); /* pointerCacheSize (2 bytes) */
+ Stream_Write_UINT16(s,
+ settings->PointerCacheSize); /* pointerCacheSize (2 bytes) */
}
rdp_capability_set_finish(s, header, CAPSET_TYPE_POINTER);
return TRUE;
}
-BOOL rdp_print_pointer_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_pointer_capability_set(wStream* s, UINT16 length)
{
UINT16 colorPointerFlag;
UINT16 colorPointerCacheSize;
WLog_INFO(TAG, "PointerCapabilitySet (length %d):", length);
Stream_Read_UINT16(s, colorPointerFlag); /* colorPointerFlag (2 bytes) */
- Stream_Read_UINT16(s, colorPointerCacheSize); /* colorPointerCacheSize (2 bytes) */
+ Stream_Read_UINT16(s,
+ colorPointerCacheSize); /* colorPointerCacheSize (2 bytes) */
Stream_Read_UINT16(s, pointerCacheSize); /* pointerCacheSize (2 bytes) */
WLog_INFO(TAG, "\tcolorPointerFlag: 0x%04X", colorPointerFlag);
WLog_INFO(TAG, "\tcolorPointerCacheSize: 0x%04X", colorPointerCacheSize);
* @return if the operation completed successfully
*/
-BOOL rdp_read_share_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_share_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length < 8)
return FALSE;
Stream_Seek_UINT16(s); /* nodeId (2 bytes) */
Stream_Seek_UINT16(s); /* pad2Octets (2 bytes) */
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_share_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_share_capability_set(wStream* s, rdpSettings* settings)
{
int header;
UINT16 nodeId;
return FALSE;
header = rdp_capability_set_start(s);
-
nodeId = (settings->ServerMode) ? 0x03EA : 0;
-
Stream_Write_UINT16(s, nodeId); /* nodeId (2 bytes) */
Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_SHARE);
return TRUE;
}
-BOOL rdp_print_share_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_share_capability_set(wStream* s, UINT16 length)
{
UINT16 nodeId;
UINT16 pad2Octets;
* @return if the operation completed successfully
*/
-BOOL rdp_read_color_cache_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_color_cache_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length < 8)
return FALSE;
Stream_Seek_UINT16(s); /* colorTableCacheSize (2 bytes) */
Stream_Seek_UINT16(s); /* pad2Octets (2 bytes) */
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_color_cache_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_color_cache_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
return FALSE;
header = rdp_capability_set_start(s);
-
Stream_Write_UINT16(s, 6); /* colorTableCacheSize (2 bytes) */
Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_COLOR_CACHE);
return TRUE;
}
-BOOL rdp_print_color_cache_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_color_cache_capability_set(wStream* s, UINT16 length)
{
UINT16 colorTableCacheSize;
UINT16 pad2Octets;
* @return if the operation completed successfully
*/
-BOOL rdp_read_sound_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_sound_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
UINT16 soundFlags;
Stream_Read_UINT16(s, soundFlags); /* soundFlags (2 bytes) */
Stream_Seek_UINT16(s); /* pad2OctetsA (2 bytes) */
-
settings->SoundBeepsEnabled = (soundFlags & SOUND_BEEPS_FLAG) ? TRUE : FALSE;
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_sound_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_sound_capability_set(wStream* s, rdpSettings* settings)
{
int header;
UINT16 soundFlags;
return FALSE;
header = rdp_capability_set_start(s);
-
soundFlags = (settings->SoundBeepsEnabled) ? SOUND_BEEPS_FLAG : 0;
-
Stream_Write_UINT16(s, soundFlags); /* soundFlags (2 bytes) */
Stream_Write_UINT16(s, 0); /* pad2OctetsA (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_SOUND);
return TRUE;
}
-BOOL rdp_print_sound_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_sound_capability_set(wStream* s, UINT16 length)
{
UINT16 soundFlags;
UINT16 pad2OctetsA;
* @return if the operation completed successfully
*/
-BOOL rdp_read_input_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_input_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
UINT16 inputFlags;
{
Stream_Read_UINT32(s, settings->KeyboardLayout); /* keyboardLayout (4 bytes) */
Stream_Read_UINT32(s, settings->KeyboardType); /* keyboardType (4 bytes) */
- Stream_Read_UINT32(s, settings->KeyboardSubType); /* keyboardSubType (4 bytes) */
- Stream_Read_UINT32(s, settings->KeyboardFunctionKey); /* keyboardFunctionKeys (4 bytes) */
+ Stream_Read_UINT32(s,
+ settings->KeyboardSubType); /* keyboardSubType (4 bytes) */
+ Stream_Read_UINT32(s,
+ settings->KeyboardFunctionKey); /* keyboardFunctionKeys (4 bytes) */
}
else
{
/* server does not support fastpath input */
settings->FastPathInput = FALSE;
}
- if (inputFlags & TS_INPUT_FLAG_MOUSE_HWHEEL) {
+
+ if (inputFlags & TS_INPUT_FLAG_MOUSE_HWHEEL)
+ {
settings->HasHorizontalWheel = TRUE;
}
}
+
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_input_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_input_capability_set(wStream* s, rdpSettings* settings)
{
int header;
UINT16 inputFlags;
return FALSE;
header = rdp_capability_set_start(s);
-
- inputFlags = INPUT_FLAG_SCANCODES | INPUT_FLAG_MOUSEX | INPUT_FLAG_UNICODE | TS_INPUT_FLAG_MOUSE_HWHEEL;
+ inputFlags = INPUT_FLAG_SCANCODES | INPUT_FLAG_MOUSEX | INPUT_FLAG_UNICODE |
+ TS_INPUT_FLAG_MOUSE_HWHEEL;
if (settings->FastPathInput)
{
Stream_Write_UINT16(s, 0); /* pad2OctetsA (2 bytes) */
Stream_Write_UINT32(s, settings->KeyboardLayout); /* keyboardLayout (4 bytes) */
Stream_Write_UINT32(s, settings->KeyboardType); /* keyboardType (4 bytes) */
- Stream_Write_UINT32(s, settings->KeyboardSubType); /* keyboardSubType (4 bytes) */
- Stream_Write_UINT32(s, settings->KeyboardFunctionKey); /* keyboardFunctionKeys (4 bytes) */
+ Stream_Write_UINT32(s,
+ settings->KeyboardSubType); /* keyboardSubType (4 bytes) */
+ Stream_Write_UINT32(s,
+ settings->KeyboardFunctionKey); /* keyboardFunctionKeys (4 bytes) */
Stream_Zero(s, 64); /* imeFileName (64 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_INPUT);
return TRUE;
}
-BOOL rdp_print_input_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_input_capability_set(wStream* s, UINT16 length)
{
UINT16 inputFlags;
UINT16 pad2OctetsA;
* @return if the operation completed successfully
*/
-BOOL rdp_read_font_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_font_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length > 4)
Stream_Seek_UINT16(s); /* fontSupportFlags (2 bytes) */
* @param settings settings
*/
-BOOL rdp_write_font_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_font_capability_set(wStream* s, rdpSettings* settings)
{
int header;
return FALSE;
header = rdp_capability_set_start(s);
-
Stream_Write_UINT16(s, FONTSUPPORT_FONTLIST); /* fontSupportFlags (2 bytes) */
Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_FONT);
return TRUE;
}
-BOOL rdp_print_font_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_font_capability_set(wStream* s, UINT16 length)
{
UINT16 fontSupportFlags = 0;
UINT16 pad2Octets = 0;
* @return if the operation completed successfully
*/
-BOOL rdp_read_brush_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_brush_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length < 8)
return FALSE;
Stream_Seek_UINT32(s); /* brushSupportLevel (4 bytes) */
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_brush_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_brush_capability_set(wStream* s, rdpSettings* settings)
{
int header;
return FALSE;
header = rdp_capability_set_start(s);
-
Stream_Write_UINT32(s, BRUSH_COLOR_FULL); /* brushSupportLevel (4 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_BRUSH);
return TRUE;
}
-BOOL rdp_print_brush_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_brush_capability_set(wStream* s, UINT16 length)
{
UINT32 brushSupportLevel;
WLog_INFO(TAG, "BrushCapabilitySet (length %d):", length);
* @msdn{cc240566}
* @param s stream
*/
-void rdp_read_cache_definition(wStream* s, GLYPH_CACHE_DEFINITION* cache_definition)
+static void rdp_read_cache_definition(wStream* s,
+ GLYPH_CACHE_DEFINITION* cache_definition)
{
- Stream_Read_UINT16(s, cache_definition->cacheEntries); /* cacheEntries (2 bytes) */
- Stream_Read_UINT16(s, cache_definition->cacheMaximumCellSize); /* cacheMaximumCellSize (2 bytes) */
+ Stream_Read_UINT16(s,
+ cache_definition->cacheEntries); /* cacheEntries (2 bytes) */
+ Stream_Read_UINT16(s,
+ cache_definition->cacheMaximumCellSize); /* cacheMaximumCellSize (2 bytes) */
}
/**
* @msdn{cc240566}
* @param s stream
*/
-void rdp_write_cache_definition(wStream* s, GLYPH_CACHE_DEFINITION* cache_definition)
+static void rdp_write_cache_definition(wStream* s,
+ GLYPH_CACHE_DEFINITION* cache_definition)
{
- Stream_Write_UINT16(s, cache_definition->cacheEntries); /* cacheEntries (2 bytes) */
- Stream_Write_UINT16(s, cache_definition->cacheMaximumCellSize); /* cacheMaximumCellSize (2 bytes) */
+ Stream_Write_UINT16(s,
+ cache_definition->cacheEntries); /* cacheEntries (2 bytes) */
+ Stream_Write_UINT16(s,
+ cache_definition->cacheMaximumCellSize); /* cacheMaximumCellSize (2 bytes) */
}
/**
* @return if the operation completed successfully
*/
-BOOL rdp_read_glyph_cache_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_glyph_cache_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length < 52)
return FALSE;
/* glyphCache (40 bytes) */
- rdp_read_cache_definition(s, &(settings->GlyphCache[0])); /* glyphCache0 (4 bytes) */
- rdp_read_cache_definition(s, &(settings->GlyphCache[1])); /* glyphCache1 (4 bytes) */
- rdp_read_cache_definition(s, &(settings->GlyphCache[2])); /* glyphCache2 (4 bytes) */
- rdp_read_cache_definition(s, &(settings->GlyphCache[3])); /* glyphCache3 (4 bytes) */
- rdp_read_cache_definition(s, &(settings->GlyphCache[4])); /* glyphCache4 (4 bytes) */
- rdp_read_cache_definition(s, &(settings->GlyphCache[5])); /* glyphCache5 (4 bytes) */
- rdp_read_cache_definition(s, &(settings->GlyphCache[6])); /* glyphCache6 (4 bytes) */
- rdp_read_cache_definition(s, &(settings->GlyphCache[7])); /* glyphCache7 (4 bytes) */
- rdp_read_cache_definition(s, &(settings->GlyphCache[8])); /* glyphCache8 (4 bytes) */
- rdp_read_cache_definition(s, &(settings->GlyphCache[9])); /* glyphCache9 (4 bytes) */
+ rdp_read_cache_definition(s,
+ &(settings->GlyphCache[0])); /* glyphCache0 (4 bytes) */
+ rdp_read_cache_definition(s,
+ &(settings->GlyphCache[1])); /* glyphCache1 (4 bytes) */
+ rdp_read_cache_definition(s,
+ &(settings->GlyphCache[2])); /* glyphCache2 (4 bytes) */
+ rdp_read_cache_definition(s,
+ &(settings->GlyphCache[3])); /* glyphCache3 (4 bytes) */
+ rdp_read_cache_definition(s,
+ &(settings->GlyphCache[4])); /* glyphCache4 (4 bytes) */
+ rdp_read_cache_definition(s,
+ &(settings->GlyphCache[5])); /* glyphCache5 (4 bytes) */
+ rdp_read_cache_definition(s,
+ &(settings->GlyphCache[6])); /* glyphCache6 (4 bytes) */
+ rdp_read_cache_definition(s,
+ &(settings->GlyphCache[7])); /* glyphCache7 (4 bytes) */
+ rdp_read_cache_definition(s,
+ &(settings->GlyphCache[8])); /* glyphCache8 (4 bytes) */
+ rdp_read_cache_definition(s,
+ &(settings->GlyphCache[9])); /* glyphCache9 (4 bytes) */
rdp_read_cache_definition(s, settings->FragCache); /* fragCache (4 bytes) */
-
- Stream_Read_UINT16(s, settings->GlyphSupportLevel); /* glyphSupportLevel (2 bytes) */
-
+ Stream_Read_UINT16(s,
+ settings->GlyphSupportLevel); /* glyphSupportLevel (2 bytes) */
Stream_Seek_UINT16(s); /* pad2Octets (2 bytes) */
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_glyph_cache_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_glyph_cache_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
return FALSE;
header = rdp_capability_set_start(s);
-
/* glyphCache (40 bytes) */
- rdp_write_cache_definition(s, &(settings->GlyphCache[0])); /* glyphCache0 (4 bytes) */
- rdp_write_cache_definition(s, &(settings->GlyphCache[1])); /* glyphCache1 (4 bytes) */
- rdp_write_cache_definition(s, &(settings->GlyphCache[2])); /* glyphCache2 (4 bytes) */
- rdp_write_cache_definition(s, &(settings->GlyphCache[3])); /* glyphCache3 (4 bytes) */
- rdp_write_cache_definition(s, &(settings->GlyphCache[4])); /* glyphCache4 (4 bytes) */
- rdp_write_cache_definition(s, &(settings->GlyphCache[5])); /* glyphCache5 (4 bytes) */
- rdp_write_cache_definition(s, &(settings->GlyphCache[6])); /* glyphCache6 (4 bytes) */
- rdp_write_cache_definition(s, &(settings->GlyphCache[7])); /* glyphCache7 (4 bytes) */
- rdp_write_cache_definition(s, &(settings->GlyphCache[8])); /* glyphCache8 (4 bytes) */
- rdp_write_cache_definition(s, &(settings->GlyphCache[9])); /* glyphCache9 (4 bytes) */
+ rdp_write_cache_definition(s,
+ &(settings->GlyphCache[0])); /* glyphCache0 (4 bytes) */
+ rdp_write_cache_definition(s,
+ &(settings->GlyphCache[1])); /* glyphCache1 (4 bytes) */
+ rdp_write_cache_definition(s,
+ &(settings->GlyphCache[2])); /* glyphCache2 (4 bytes) */
+ rdp_write_cache_definition(s,
+ &(settings->GlyphCache[3])); /* glyphCache3 (4 bytes) */
+ rdp_write_cache_definition(s,
+ &(settings->GlyphCache[4])); /* glyphCache4 (4 bytes) */
+ rdp_write_cache_definition(s,
+ &(settings->GlyphCache[5])); /* glyphCache5 (4 bytes) */
+ rdp_write_cache_definition(s,
+ &(settings->GlyphCache[6])); /* glyphCache6 (4 bytes) */
+ rdp_write_cache_definition(s,
+ &(settings->GlyphCache[7])); /* glyphCache7 (4 bytes) */
+ rdp_write_cache_definition(s,
+ &(settings->GlyphCache[8])); /* glyphCache8 (4 bytes) */
+ rdp_write_cache_definition(s,
+ &(settings->GlyphCache[9])); /* glyphCache9 (4 bytes) */
rdp_write_cache_definition(s, settings->FragCache); /* fragCache (4 bytes) */
-
- Stream_Write_UINT16(s, settings->GlyphSupportLevel); /* glyphSupportLevel (2 bytes) */
-
+ Stream_Write_UINT16(s,
+ settings->GlyphSupportLevel); /* glyphSupportLevel (2 bytes) */
Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_GLYPH_CACHE);
return TRUE;
}
-BOOL rdp_print_glyph_cache_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_glyph_cache_capability_set(wStream* s, UINT16 length)
{
GLYPH_CACHE_DEFINITION glyphCache[10];
GLYPH_CACHE_DEFINITION fragCache;
rdp_read_cache_definition(s, &glyphCache[8]); /* glyphCache8 (4 bytes) */
rdp_read_cache_definition(s, &glyphCache[9]); /* glyphCache9 (4 bytes) */
rdp_read_cache_definition(s, &fragCache); /* fragCache (4 bytes) */
-
Stream_Read_UINT16(s, glyphSupportLevel); /* glyphSupportLevel (2 bytes) */
Stream_Read_UINT16(s, pad2Octets); /* pad2Octets (2 bytes) */
- WLog_INFO(TAG, "\tglyphCache0: Entries: %d MaximumCellSize: %d", glyphCache[0].cacheEntries, glyphCache[0].cacheMaximumCellSize);
- WLog_INFO(TAG, "\tglyphCache1: Entries: %d MaximumCellSize: %d", glyphCache[1].cacheEntries, glyphCache[1].cacheMaximumCellSize);
- WLog_INFO(TAG, "\tglyphCache2: Entries: %d MaximumCellSize: %d", glyphCache[2].cacheEntries, glyphCache[2].cacheMaximumCellSize);
- WLog_INFO(TAG, "\tglyphCache3: Entries: %d MaximumCellSize: %d", glyphCache[3].cacheEntries, glyphCache[3].cacheMaximumCellSize);
- WLog_INFO(TAG, "\tglyphCache4: Entries: %d MaximumCellSize: %d", glyphCache[4].cacheEntries, glyphCache[4].cacheMaximumCellSize);
- WLog_INFO(TAG, "\tglyphCache5: Entries: %d MaximumCellSize: %d", glyphCache[5].cacheEntries, glyphCache[5].cacheMaximumCellSize);
- WLog_INFO(TAG, "\tglyphCache6: Entries: %d MaximumCellSize: %d", glyphCache[6].cacheEntries, glyphCache[6].cacheMaximumCellSize);
- WLog_INFO(TAG, "\tglyphCache7: Entries: %d MaximumCellSize: %d", glyphCache[7].cacheEntries, glyphCache[7].cacheMaximumCellSize);
- WLog_INFO(TAG, "\tglyphCache8: Entries: %d MaximumCellSize: %d", glyphCache[8].cacheEntries, glyphCache[8].cacheMaximumCellSize);
- WLog_INFO(TAG, "\tglyphCache9: Entries: %d MaximumCellSize: %d", glyphCache[9].cacheEntries, glyphCache[9].cacheMaximumCellSize);
- WLog_INFO(TAG, "\tfragCache: Entries: %d MaximumCellSize: %d", fragCache.cacheEntries, fragCache.cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tglyphCache0: Entries: %d MaximumCellSize: %d",
+ glyphCache[0].cacheEntries, glyphCache[0].cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tglyphCache1: Entries: %d MaximumCellSize: %d",
+ glyphCache[1].cacheEntries, glyphCache[1].cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tglyphCache2: Entries: %d MaximumCellSize: %d",
+ glyphCache[2].cacheEntries, glyphCache[2].cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tglyphCache3: Entries: %d MaximumCellSize: %d",
+ glyphCache[3].cacheEntries, glyphCache[3].cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tglyphCache4: Entries: %d MaximumCellSize: %d",
+ glyphCache[4].cacheEntries, glyphCache[4].cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tglyphCache5: Entries: %d MaximumCellSize: %d",
+ glyphCache[5].cacheEntries, glyphCache[5].cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tglyphCache6: Entries: %d MaximumCellSize: %d",
+ glyphCache[6].cacheEntries, glyphCache[6].cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tglyphCache7: Entries: %d MaximumCellSize: %d",
+ glyphCache[7].cacheEntries, glyphCache[7].cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tglyphCache8: Entries: %d MaximumCellSize: %d",
+ glyphCache[8].cacheEntries, glyphCache[8].cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tglyphCache9: Entries: %d MaximumCellSize: %d",
+ glyphCache[9].cacheEntries, glyphCache[9].cacheMaximumCellSize);
+ WLog_INFO(TAG, "\tfragCache: Entries: %d MaximumCellSize: %d",
+ fragCache.cacheEntries, fragCache.cacheMaximumCellSize);
WLog_INFO(TAG, "\tglyphSupportLevel: 0x%04X", glyphSupportLevel);
WLog_INFO(TAG, "\tpad2Octets: 0x%04X", pad2Octets);
return TRUE;
* @return if the operation completed successfully
*/
-BOOL rdp_read_offscreen_bitmap_cache_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_offscreen_bitmap_cache_capability_set(wStream* s,
+ UINT16 length, rdpSettings* settings)
{
UINT32 offscreenSupportLevel;
if (length < 12)
return FALSE;
- Stream_Read_UINT32(s, offscreenSupportLevel); /* offscreenSupportLevel (4 bytes) */
- Stream_Read_UINT16(s, settings->OffscreenCacheSize); /* offscreenCacheSize (2 bytes) */
- Stream_Read_UINT16(s, settings->OffscreenCacheEntries); /* offscreenCacheEntries (2 bytes) */
+ Stream_Read_UINT32(s,
+ offscreenSupportLevel); /* offscreenSupportLevel (4 bytes) */
+ Stream_Read_UINT16(s,
+ settings->OffscreenCacheSize); /* offscreenCacheSize (2 bytes) */
+ Stream_Read_UINT16(s,
+ settings->OffscreenCacheEntries); /* offscreenCacheEntries (2 bytes) */
if (offscreenSupportLevel & TRUE)
settings->OffscreenSupportLevel = TRUE;
* @param settings settings
*/
-BOOL rdp_write_offscreen_bitmap_cache_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_offscreen_bitmap_cache_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
UINT32 offscreenSupportLevel = FALSE;
if (settings->OffscreenSupportLevel)
offscreenSupportLevel = TRUE;
- Stream_Write_UINT32(s, offscreenSupportLevel); /* offscreenSupportLevel (4 bytes) */
- Stream_Write_UINT16(s, settings->OffscreenCacheSize); /* offscreenCacheSize (2 bytes) */
- Stream_Write_UINT16(s, settings->OffscreenCacheEntries); /* offscreenCacheEntries (2 bytes) */
-
+ Stream_Write_UINT32(s,
+ offscreenSupportLevel); /* offscreenSupportLevel (4 bytes) */
+ Stream_Write_UINT16(s,
+ settings->OffscreenCacheSize); /* offscreenCacheSize (2 bytes) */
+ Stream_Write_UINT16(s,
+ settings->OffscreenCacheEntries); /* offscreenCacheEntries (2 bytes) */
rdp_capability_set_finish(s, header, CAPSET_TYPE_OFFSCREEN_CACHE);
return TRUE;
}
-BOOL rdp_print_offscreen_bitmap_cache_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_offscreen_bitmap_cache_capability_set(wStream* s,
+ UINT16 length)
{
UINT32 offscreenSupportLevel;
UINT16 offscreenCacheSize;
if (length < 12)
return FALSE;
- Stream_Read_UINT32(s, offscreenSupportLevel); /* offscreenSupportLevel (4 bytes) */
+ Stream_Read_UINT32(s,
+ offscreenSupportLevel); /* offscreenSupportLevel (4 bytes) */
Stream_Read_UINT16(s, offscreenCacheSize); /* offscreenCacheSize (2 bytes) */
- Stream_Read_UINT16(s, offscreenCacheEntries); /* offscreenCacheEntries (2 bytes) */
+ Stream_Read_UINT16(s,
+ offscreenCacheEntries); /* offscreenCacheEntries (2 bytes) */
WLog_INFO(TAG, "\toffscreenSupportLevel: 0x%08X", offscreenSupportLevel);
WLog_INFO(TAG, "\toffscreenCacheSize: 0x%04X", offscreenCacheSize);
WLog_INFO(TAG, "\toffscreenCacheEntries: 0x%04X", offscreenCacheEntries);
* @return if the operation completed successfully
*/
-BOOL rdp_read_bitmap_cache_host_support_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_bitmap_cache_host_support_capability_set(wStream* s,
+ UINT16 length, rdpSettings* settings)
{
BYTE cacheVersion;
* @param settings settings
*/
-BOOL rdp_write_bitmap_cache_host_support_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_bitmap_cache_host_support_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
return FALSE;
header = rdp_capability_set_start(s);
-
Stream_Write_UINT8(s, BITMAP_CACHE_V2); /* cacheVersion (1 byte) */
Stream_Write_UINT8(s, 0); /* pad1 (1 byte) */
Stream_Write_UINT16(s, 0); /* pad2 (2 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_BITMAP_CACHE_HOST_SUPPORT);
return TRUE;
}
-BOOL rdp_print_bitmap_cache_host_support_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_bitmap_cache_host_support_capability_set(wStream* s,
+ UINT16 length)
{
BYTE cacheVersion;
BYTE pad1;
return TRUE;
}
-void rdp_read_bitmap_cache_cell_info(wStream* s, BITMAP_CACHE_V2_CELL_INFO* cellInfo)
+static void rdp_read_bitmap_cache_cell_info(wStream* s,
+ BITMAP_CACHE_V2_CELL_INFO* cellInfo)
{
UINT32 info;
-
/**
* numEntries is in the first 31 bits, while the last bit (k)
* is used to indicate a persistent bitmap cache.
*/
-
Stream_Read_UINT32(s, info);
-
cellInfo->numEntries = (info & 0x7FFFFFFF);
cellInfo->persistent = (info & 0x80000000) ? 1 : 0;
}
-void rdp_write_bitmap_cache_cell_info(wStream* s, BITMAP_CACHE_V2_CELL_INFO* cellInfo)
+static void rdp_write_bitmap_cache_cell_info(wStream* s,
+ BITMAP_CACHE_V2_CELL_INFO* cellInfo)
{
UINT32 info;
-
/**
* numEntries is in the first 31 bits, while the last bit (k)
* is used to indicate a persistent bitmap cache.
*/
-
info = (cellInfo->numEntries | (cellInfo->persistent << 31));
Stream_Write_UINT32(s, info);
}
* @return if the operation completed successfully
*/
-BOOL rdp_read_bitmap_cache_v2_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_bitmap_cache_v2_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length < 40)
return FALSE;
Stream_Seek(s, 4); /* bitmapCache3CellInfo (4 bytes) */
Stream_Seek(s, 4); /* bitmapCache4CellInfo (4 bytes) */
Stream_Seek(s, 12); /* pad3 (12 bytes) */
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_bitmap_cache_v2_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_bitmap_cache_v2_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
UINT16 cacheFlags;
return FALSE;
header = rdp_capability_set_start(s);
-
cacheFlags = ALLOW_CACHE_WAITING_LIST_FLAG;
if (settings->BitmapCachePersistEnabled)
Stream_Write_UINT16(s, cacheFlags); /* cacheFlags (2 bytes) */
Stream_Write_UINT8(s, 0); /* pad2 (1 byte) */
- Stream_Write_UINT8(s, settings->BitmapCacheV2NumCells); /* numCellCaches (1 byte) */
- rdp_write_bitmap_cache_cell_info(s, &settings->BitmapCacheV2CellInfo[0]); /* bitmapCache0CellInfo (4 bytes) */
- rdp_write_bitmap_cache_cell_info(s, &settings->BitmapCacheV2CellInfo[1]); /* bitmapCache1CellInfo (4 bytes) */
- rdp_write_bitmap_cache_cell_info(s, &settings->BitmapCacheV2CellInfo[2]); /* bitmapCache2CellInfo (4 bytes) */
- rdp_write_bitmap_cache_cell_info(s, &settings->BitmapCacheV2CellInfo[3]); /* bitmapCache3CellInfo (4 bytes) */
- rdp_write_bitmap_cache_cell_info(s, &settings->BitmapCacheV2CellInfo[4]); /* bitmapCache4CellInfo (4 bytes) */
+ Stream_Write_UINT8(s,
+ settings->BitmapCacheV2NumCells); /* numCellCaches (1 byte) */
+ rdp_write_bitmap_cache_cell_info(s,
+ &settings->BitmapCacheV2CellInfo[0]); /* bitmapCache0CellInfo (4 bytes) */
+ rdp_write_bitmap_cache_cell_info(s,
+ &settings->BitmapCacheV2CellInfo[1]); /* bitmapCache1CellInfo (4 bytes) */
+ rdp_write_bitmap_cache_cell_info(s,
+ &settings->BitmapCacheV2CellInfo[2]); /* bitmapCache2CellInfo (4 bytes) */
+ rdp_write_bitmap_cache_cell_info(s,
+ &settings->BitmapCacheV2CellInfo[3]); /* bitmapCache3CellInfo (4 bytes) */
+ rdp_write_bitmap_cache_cell_info(s,
+ &settings->BitmapCacheV2CellInfo[4]); /* bitmapCache4CellInfo (4 bytes) */
Stream_Zero(s, 12); /* pad3 (12 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_BITMAP_CACHE_V2);
return TRUE;
}
-BOOL rdp_print_bitmap_cache_v2_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_bitmap_cache_v2_capability_set(wStream* s, UINT16 length)
{
UINT16 cacheFlags;
BYTE pad2;
Stream_Read_UINT16(s, cacheFlags); /* cacheFlags (2 bytes) */
Stream_Read_UINT8(s, pad2); /* pad2 (1 byte) */
Stream_Read_UINT8(s, numCellCaches); /* numCellCaches (1 byte) */
- rdp_read_bitmap_cache_cell_info(s, &bitmapCacheV2CellInfo[0]); /* bitmapCache0CellInfo (4 bytes) */
- rdp_read_bitmap_cache_cell_info(s, &bitmapCacheV2CellInfo[1]); /* bitmapCache1CellInfo (4 bytes) */
- rdp_read_bitmap_cache_cell_info(s, &bitmapCacheV2CellInfo[2]); /* bitmapCache2CellInfo (4 bytes) */
- rdp_read_bitmap_cache_cell_info(s, &bitmapCacheV2CellInfo[3]); /* bitmapCache3CellInfo (4 bytes) */
- rdp_read_bitmap_cache_cell_info(s, &bitmapCacheV2CellInfo[4]); /* bitmapCache4CellInfo (4 bytes) */
+ rdp_read_bitmap_cache_cell_info(s,
+ &bitmapCacheV2CellInfo[0]); /* bitmapCache0CellInfo (4 bytes) */
+ rdp_read_bitmap_cache_cell_info(s,
+ &bitmapCacheV2CellInfo[1]); /* bitmapCache1CellInfo (4 bytes) */
+ rdp_read_bitmap_cache_cell_info(s,
+ &bitmapCacheV2CellInfo[2]); /* bitmapCache2CellInfo (4 bytes) */
+ rdp_read_bitmap_cache_cell_info(s,
+ &bitmapCacheV2CellInfo[3]); /* bitmapCache3CellInfo (4 bytes) */
+ rdp_read_bitmap_cache_cell_info(s,
+ &bitmapCacheV2CellInfo[4]); /* bitmapCache4CellInfo (4 bytes) */
Stream_Seek(s, 12); /* pad3 (12 bytes) */
WLog_INFO(TAG, "\tcacheFlags: 0x%04X", cacheFlags);
WLog_INFO(TAG, "\tpad2: 0x%02X", pad2);
WLog_INFO(TAG, "\tnumCellCaches: 0x%02X", numCellCaches);
- WLog_INFO(TAG, "\tbitmapCache0CellInfo: numEntries: %d persistent: %d", bitmapCacheV2CellInfo[0].numEntries, bitmapCacheV2CellInfo[0].persistent);
- WLog_INFO(TAG, "\tbitmapCache1CellInfo: numEntries: %d persistent: %d", bitmapCacheV2CellInfo[1].numEntries, bitmapCacheV2CellInfo[1].persistent);
- WLog_INFO(TAG, "\tbitmapCache2CellInfo: numEntries: %d persistent: %d", bitmapCacheV2CellInfo[2].numEntries, bitmapCacheV2CellInfo[2].persistent);
- WLog_INFO(TAG, "\tbitmapCache3CellInfo: numEntries: %d persistent: %d", bitmapCacheV2CellInfo[3].numEntries, bitmapCacheV2CellInfo[3].persistent);
- WLog_INFO(TAG, "\tbitmapCache4CellInfo: numEntries: %d persistent: %d", bitmapCacheV2CellInfo[4].numEntries, bitmapCacheV2CellInfo[4].persistent);
+ WLog_INFO(TAG, "\tbitmapCache0CellInfo: numEntries: %d persistent: %d",
+ bitmapCacheV2CellInfo[0].numEntries, bitmapCacheV2CellInfo[0].persistent);
+ WLog_INFO(TAG, "\tbitmapCache1CellInfo: numEntries: %d persistent: %d",
+ bitmapCacheV2CellInfo[1].numEntries, bitmapCacheV2CellInfo[1].persistent);
+ WLog_INFO(TAG, "\tbitmapCache2CellInfo: numEntries: %d persistent: %d",
+ bitmapCacheV2CellInfo[2].numEntries, bitmapCacheV2CellInfo[2].persistent);
+ WLog_INFO(TAG, "\tbitmapCache3CellInfo: numEntries: %d persistent: %d",
+ bitmapCacheV2CellInfo[3].numEntries, bitmapCacheV2CellInfo[3].persistent);
+ WLog_INFO(TAG, "\tbitmapCache4CellInfo: numEntries: %d persistent: %d",
+ bitmapCacheV2CellInfo[4].numEntries, bitmapCacheV2CellInfo[4].persistent);
return TRUE;
}
* @return if the operation completed successfully
*/
-BOOL rdp_read_virtual_channel_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_virtual_channel_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
UINT32 flags;
UINT32 VCChunkSize;
* @param settings settings
*/
-BOOL rdp_write_virtual_channel_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_virtual_channel_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
UINT32 flags;
return FALSE;
header = rdp_capability_set_start(s);
-
flags = VCCAPS_NO_COMPR;
-
Stream_Write_UINT32(s, flags); /* flags (4 bytes) */
- Stream_Write_UINT32(s, settings->VirtualChannelChunkSize); /* VCChunkSize (4 bytes) */
-
+ Stream_Write_UINT32(s,
+ settings->VirtualChannelChunkSize); /* VCChunkSize (4 bytes) */
rdp_capability_set_finish(s, header, CAPSET_TYPE_VIRTUAL_CHANNEL);
return TRUE;
}
-BOOL rdp_print_virtual_channel_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_virtual_channel_capability_set(wStream* s, UINT16 length)
{
UINT32 flags;
UINT32 VCChunkSize;
* @return if the operation completed successfully
*/
-BOOL rdp_read_draw_nine_grid_cache_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_draw_nine_grid_cache_capability_set(wStream* s,
+ UINT16 length, rdpSettings* settings)
{
UINT32 drawNineGridSupportLevel;
if (length < 12)
return FALSE;
- Stream_Read_UINT32(s, drawNineGridSupportLevel); /* drawNineGridSupportLevel (4 bytes) */
- Stream_Read_UINT16(s, settings->DrawNineGridCacheSize); /* drawNineGridCacheSize (2 bytes) */
- Stream_Read_UINT16(s, settings->DrawNineGridCacheEntries); /* drawNineGridCacheEntries (2 bytes) */
+ Stream_Read_UINT32(s,
+ drawNineGridSupportLevel); /* drawNineGridSupportLevel (4 bytes) */
+ Stream_Read_UINT16(s,
+ settings->DrawNineGridCacheSize); /* drawNineGridCacheSize (2 bytes) */
+ Stream_Read_UINT16(s,
+ settings->DrawNineGridCacheEntries); /* drawNineGridCacheEntries (2 bytes) */
if ((drawNineGridSupportLevel & DRAW_NINEGRID_SUPPORTED) ||
- (drawNineGridSupportLevel & DRAW_NINEGRID_SUPPORTED_V2))
+ (drawNineGridSupportLevel & DRAW_NINEGRID_SUPPORTED_V2))
settings->DrawNineGridEnabled = TRUE;
return TRUE;
* @param settings settings
*/
-BOOL rdp_write_draw_nine_grid_cache_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_draw_nine_grid_cache_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
UINT32 drawNineGridSupportLevel;
return FALSE;
header = rdp_capability_set_start(s);
-
- drawNineGridSupportLevel = (settings->DrawNineGridEnabled) ? DRAW_NINEGRID_SUPPORTED_V2 : DRAW_NINEGRID_NO_SUPPORT;
-
- Stream_Write_UINT32(s, drawNineGridSupportLevel); /* drawNineGridSupportLevel (4 bytes) */
- Stream_Write_UINT16(s, settings->DrawNineGridCacheSize); /* drawNineGridCacheSize (2 bytes) */
- Stream_Write_UINT16(s, settings->DrawNineGridCacheEntries); /* drawNineGridCacheEntries (2 bytes) */
-
+ drawNineGridSupportLevel = (settings->DrawNineGridEnabled) ?
+ DRAW_NINEGRID_SUPPORTED_V2 : DRAW_NINEGRID_NO_SUPPORT;
+ Stream_Write_UINT32(s,
+ drawNineGridSupportLevel); /* drawNineGridSupportLevel (4 bytes) */
+ Stream_Write_UINT16(s,
+ settings->DrawNineGridCacheSize); /* drawNineGridCacheSize (2 bytes) */
+ Stream_Write_UINT16(s,
+ settings->DrawNineGridCacheEntries); /* drawNineGridCacheEntries (2 bytes) */
rdp_capability_set_finish(s, header, CAPSET_TYPE_DRAW_NINE_GRID_CACHE);
return TRUE;
}
-void rdp_write_gdiplus_cache_entries(wStream* s, UINT16 gce, UINT16 bce, UINT16 pce, UINT16 ice, UINT16 ace)
+static void rdp_write_gdiplus_cache_entries(wStream* s, UINT16 gce, UINT16 bce,
+ UINT16 pce, UINT16 ice, UINT16 ace)
{
Stream_Write_UINT16(s, gce); /* gdipGraphicsCacheEntries (2 bytes) */
Stream_Write_UINT16(s, bce); /* gdipBrushCacheEntries (2 bytes) */
Stream_Write_UINT16(s, ace); /* gdipImageAttributesCacheEntries (2 bytes) */
}
-void rdp_write_gdiplus_cache_chunk_size(wStream* s, UINT16 gccs, UINT16 obccs, UINT16 opccs, UINT16 oiaccs)
+static void rdp_write_gdiplus_cache_chunk_size(wStream* s, UINT16 gccs,
+ UINT16 obccs, UINT16 opccs, UINT16 oiaccs)
{
Stream_Write_UINT16(s, gccs); /* gdipGraphicsCacheChunkSize (2 bytes) */
Stream_Write_UINT16(s, obccs); /* gdipObjectBrushCacheChunkSize (2 bytes) */
Stream_Write_UINT16(s, opccs); /* gdipObjectPenCacheChunkSize (2 bytes) */
- Stream_Write_UINT16(s, oiaccs); /* gdipObjectImageAttributesCacheChunkSize (2 bytes) */
+ Stream_Write_UINT16(s,
+ oiaccs); /* gdipObjectImageAttributesCacheChunkSize (2 bytes) */
}
-void rdp_write_gdiplus_image_cache_properties(wStream* s, UINT16 oiccs, UINT16 oicts, UINT16 oicms)
+static void rdp_write_gdiplus_image_cache_properties(wStream* s, UINT16 oiccs,
+ UINT16 oicts, UINT16 oicms)
{
Stream_Write_UINT16(s, oiccs); /* gdipObjectImageCacheChunkSize (2 bytes) */
Stream_Write_UINT16(s, oicts); /* gdipObjectImageCacheTotalSize (2 bytes) */
Stream_Write_UINT16(s, oicms); /* gdipObjectImageCacheMaxSize (2 bytes) */
}
-BOOL rdp_print_draw_nine_grid_cache_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_draw_nine_grid_cache_capability_set(wStream* s,
+ UINT16 length)
{
UINT32 drawNineGridSupportLevel;
UINT16 DrawNineGridCacheSize;
if (length < 12)
return FALSE;
- Stream_Read_UINT32(s, drawNineGridSupportLevel); /* drawNineGridSupportLevel (4 bytes) */
- Stream_Read_UINT16(s, DrawNineGridCacheSize); /* drawNineGridCacheSize (2 bytes) */
- Stream_Read_UINT16(s, DrawNineGridCacheEntries); /* drawNineGridCacheEntries (2 bytes) */
-
+ Stream_Read_UINT32(s,
+ drawNineGridSupportLevel); /* drawNineGridSupportLevel (4 bytes) */
+ Stream_Read_UINT16(s,
+ DrawNineGridCacheSize); /* drawNineGridCacheSize (2 bytes) */
+ Stream_Read_UINT16(s,
+ DrawNineGridCacheEntries); /* drawNineGridCacheEntries (2 bytes) */
return TRUE;
}
* @return if the operation completed successfully
*/
-BOOL rdp_read_draw_gdiplus_cache_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_draw_gdiplus_cache_capability_set(wStream* s,
+ UINT16 length, rdpSettings* settings)
{
UINT32 drawGDIPlusSupportLevel;
UINT32 drawGdiplusCacheLevel;
if (length < 40)
return FALSE;
- Stream_Read_UINT32(s, drawGDIPlusSupportLevel); /* drawGDIPlusSupportLevel (4 bytes) */
+ Stream_Read_UINT32(s,
+ drawGDIPlusSupportLevel); /* drawGDIPlusSupportLevel (4 bytes) */
Stream_Seek_UINT32(s); /* GdipVersion (4 bytes) */
- Stream_Read_UINT32(s, drawGdiplusCacheLevel); /* drawGdiplusCacheLevel (4 bytes) */
+ Stream_Read_UINT32(s,
+ drawGdiplusCacheLevel); /* drawGdiplusCacheLevel (4 bytes) */
Stream_Seek(s, 10); /* GdipCacheEntries (10 bytes) */
Stream_Seek(s, 8); /* GdipCacheChunkSize (8 bytes) */
Stream_Seek(s, 6); /* GdipImageCacheProperties (6 bytes) */
* @param settings settings
*/
-BOOL rdp_write_draw_gdiplus_cache_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_draw_gdiplus_cache_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
UINT32 drawGDIPlusSupportLevel;
return FALSE;
header = rdp_capability_set_start(s);
-
- drawGDIPlusSupportLevel = (settings->DrawGdiPlusEnabled) ? DRAW_GDIPLUS_SUPPORTED : DRAW_GDIPLUS_DEFAULT;
- drawGdiplusCacheLevel = (settings->DrawGdiPlusEnabled) ? DRAW_GDIPLUS_CACHE_LEVEL_ONE : DRAW_GDIPLUS_CACHE_LEVEL_DEFAULT;
-
- Stream_Write_UINT32(s, drawGDIPlusSupportLevel); /* drawGDIPlusSupportLevel (4 bytes) */
+ drawGDIPlusSupportLevel = (settings->DrawGdiPlusEnabled) ?
+ DRAW_GDIPLUS_SUPPORTED : DRAW_GDIPLUS_DEFAULT;
+ drawGdiplusCacheLevel = (settings->DrawGdiPlusEnabled) ?
+ DRAW_GDIPLUS_CACHE_LEVEL_ONE : DRAW_GDIPLUS_CACHE_LEVEL_DEFAULT;
+ Stream_Write_UINT32(s,
+ drawGDIPlusSupportLevel); /* drawGDIPlusSupportLevel (4 bytes) */
Stream_Write_UINT32(s, 0); /* GdipVersion (4 bytes) */
- Stream_Write_UINT32(s, drawGdiplusCacheLevel); /* drawGdiplusCacheLevel (4 bytes) */
- rdp_write_gdiplus_cache_entries(s, 10, 5, 5, 10, 2); /* GdipCacheEntries (10 bytes) */
- rdp_write_gdiplus_cache_chunk_size(s, 512, 2048, 1024, 64); /* GdipCacheChunkSize (8 bytes) */
- rdp_write_gdiplus_image_cache_properties(s, 4096, 256, 128); /* GdipImageCacheProperties (6 bytes) */
-
+ Stream_Write_UINT32(s,
+ drawGdiplusCacheLevel); /* drawGdiplusCacheLevel (4 bytes) */
+ rdp_write_gdiplus_cache_entries(s, 10, 5, 5, 10,
+ 2); /* GdipCacheEntries (10 bytes) */
+ rdp_write_gdiplus_cache_chunk_size(s, 512, 2048, 1024,
+ 64); /* GdipCacheChunkSize (8 bytes) */
+ rdp_write_gdiplus_image_cache_properties(s, 4096, 256,
+ 128); /* GdipImageCacheProperties (6 bytes) */
rdp_capability_set_finish(s, header, CAPSET_TYPE_DRAW_GDI_PLUS);
return TRUE;
}
-BOOL rdp_print_draw_gdiplus_cache_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_draw_gdiplus_cache_capability_set(wStream* s,
+ UINT16 length)
{
UINT32 drawGdiPlusSupportLevel;
UINT32 GdipVersion;
if (length < 40)
return FALSE;
- Stream_Read_UINT32(s, drawGdiPlusSupportLevel); /* drawGdiPlusSupportLevel (4 bytes) */
+ Stream_Read_UINT32(s,
+ drawGdiPlusSupportLevel); /* drawGdiPlusSupportLevel (4 bytes) */
Stream_Read_UINT32(s, GdipVersion); /* GdipVersion (4 bytes) */
- Stream_Read_UINT32(s, drawGdiplusCacheLevel); /* drawGdiPlusCacheLevel (4 bytes) */
+ Stream_Read_UINT32(s,
+ drawGdiplusCacheLevel); /* drawGdiPlusCacheLevel (4 bytes) */
Stream_Seek(s, 10); /* GdipCacheEntries (10 bytes) */
Stream_Seek(s, 8); /* GdipCacheChunkSize (8 bytes) */
Stream_Seek(s, 6); /* GdipImageCacheProperties (6 bytes) */
-
return TRUE;
}
* @return if the operation completed successfully
*/
-BOOL rdp_read_remote_programs_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_remote_programs_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
UINT32 railSupportLevel;
settings->RemoteApplicationMode = FALSE;
}
}
+
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_remote_programs_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_remote_programs_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
UINT32 railSupportLevel;
return FALSE;
header = rdp_capability_set_start(s);
-
railSupportLevel = RAIL_LEVEL_SUPPORTED;
if (settings->RemoteAppLanguageBarSupported)
railSupportLevel |= RAIL_LEVEL_DOCKED_LANGBAR_SUPPORTED;
Stream_Write_UINT32(s, railSupportLevel); /* railSupportLevel (4 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_RAIL);
return TRUE;
}
-BOOL rdp_print_remote_programs_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_remote_programs_capability_set(wStream* s, UINT16 length)
{
UINT32 railSupportLevel;
WLog_INFO(TAG, "RemoteProgramsCapabilitySet (length %d):", length);
* @return if the operation completed successfully
*/
-BOOL rdp_read_window_list_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_window_list_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length < 11)
return FALSE;
Stream_Seek_UINT32(s); /* wndSupportLevel (4 bytes) */
Stream_Seek_UINT8(s); /* numIconCaches (1 byte) */
Stream_Seek_UINT16(s); /* numIconCacheEntries (2 bytes) */
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_window_list_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_window_list_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
UINT32 wndSupportLevel;
return FALSE;
header = rdp_capability_set_start(s);
-
wndSupportLevel = WINDOW_LEVEL_SUPPORTED_EX;
-
Stream_Write_UINT32(s, wndSupportLevel); /* wndSupportLevel (4 bytes) */
- Stream_Write_UINT8(s, settings->RemoteAppNumIconCaches); /* numIconCaches (1 byte) */
- Stream_Write_UINT16(s, settings->RemoteAppNumIconCacheEntries); /* numIconCacheEntries (2 bytes) */
-
+ Stream_Write_UINT8(s,
+ settings->RemoteAppNumIconCaches); /* numIconCaches (1 byte) */
+ Stream_Write_UINT16(s,
+ settings->RemoteAppNumIconCacheEntries); /* numIconCacheEntries (2 bytes) */
rdp_capability_set_finish(s, header, CAPSET_TYPE_WINDOW);
return TRUE;
}
-BOOL rdp_print_window_list_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_window_list_capability_set(wStream* s, UINT16 length)
{
UINT32 wndSupportLevel;
BYTE numIconCaches;
* @return if the operation completed successfully
*/
-BOOL rdp_read_desktop_composition_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_desktop_composition_capability_set(wStream* s,
+ UINT16 length, rdpSettings* settings)
{
if (length < 6)
return FALSE;
Stream_Seek_UINT16(s); /* compDeskSupportLevel (2 bytes) */
-
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_desktop_composition_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_desktop_composition_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
UINT16 compDeskSupportLevel;
return FALSE;
header = rdp_capability_set_start(s);
-
- compDeskSupportLevel = (settings->AllowDesktopComposition) ? COMPDESK_SUPPORTED : COMPDESK_NOT_SUPPORTED;
-
- Stream_Write_UINT16(s, compDeskSupportLevel); /* compDeskSupportLevel (2 bytes) */
-
+ compDeskSupportLevel = (settings->AllowDesktopComposition) ?
+ COMPDESK_SUPPORTED : COMPDESK_NOT_SUPPORTED;
+ Stream_Write_UINT16(s,
+ compDeskSupportLevel); /* compDeskSupportLevel (2 bytes) */
rdp_capability_set_finish(s, header, CAPSET_TYPE_COMP_DESK);
return TRUE;
}
-BOOL rdp_print_desktop_composition_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_desktop_composition_capability_set(wStream* s,
+ UINT16 length)
{
UINT16 compDeskSupportLevel;
WLog_INFO(TAG, "DesktopCompositionCapabilitySet (length %d):", length);
if (length < 6)
return FALSE;
- Stream_Read_UINT16(s, compDeskSupportLevel); /* compDeskSupportLevel (2 bytes) */
+ Stream_Read_UINT16(s,
+ compDeskSupportLevel); /* compDeskSupportLevel (2 bytes) */
WLog_INFO(TAG, "\tcompDeskSupportLevel: 0x%04X", compDeskSupportLevel);
return TRUE;
}
* @return if the operation completed successfully
*/
-BOOL rdp_read_multifragment_update_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_multifragment_update_capability_set(wStream* s,
+ UINT16 length, rdpSettings* settings)
{
UINT32 multifragMaxRequestSize;
* @param settings settings
*/
-BOOL rdp_write_multifragment_update_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_multifragment_update_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
* greater than or equal to the value we're sending here.
* See [MS-RDPRFX 1.5 capability #2]
*/
-
- UINT32 tileNumX = (settings->DesktopWidth+63)/64;
- UINT32 tileNumY = (settings->DesktopHeight+63)/64;
-
+ UINT32 tileNumX = (settings->DesktopWidth + 63) / 64;
+ UINT32 tileNumY = (settings->DesktopHeight + 63) / 64;
settings->MultifragMaxRequestSize = tileNumX * tileNumY * 16384;
-
/* and add room for headers, regions, frame markers, etc. */
settings->MultifragMaxRequestSize += 16384;
}
header = rdp_capability_set_start(s);
-
- Stream_Write_UINT32(s, settings->MultifragMaxRequestSize); /* MaxRequestSize (4 bytes) */
-
+ Stream_Write_UINT32(s,
+ settings->MultifragMaxRequestSize); /* MaxRequestSize (4 bytes) */
rdp_capability_set_finish(s, header, CAPSET_TYPE_MULTI_FRAGMENT_UPDATE);
return TRUE;
}
-BOOL rdp_print_multifragment_update_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_multifragment_update_capability_set(wStream* s,
+ UINT16 length)
{
UINT32 maxRequestSize;
WLog_INFO(TAG, "MultifragmentUpdateCapabilitySet (length %d):", length);
* @return if the operation completed successfully
*/
-BOOL rdp_read_large_pointer_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_large_pointer_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
UINT16 largePointerSupportFlags;
if (length < 6)
return FALSE;
- Stream_Read_UINT16(s, largePointerSupportFlags); /* largePointerSupportFlags (2 bytes) */
-
- settings->LargePointerFlag = (largePointerSupportFlags & LARGE_POINTER_FLAG_96x96) ? 1 : 0;
-
+ Stream_Read_UINT16(s,
+ largePointerSupportFlags); /* largePointerSupportFlags (2 bytes) */
+ settings->LargePointerFlag = (largePointerSupportFlags &
+ LARGE_POINTER_FLAG_96x96) ? 1 : 0;
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_large_pointer_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_large_pointer_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
UINT16 largePointerSupportFlags;
return FALSE;
header = rdp_capability_set_start(s);
-
- largePointerSupportFlags = (settings->LargePointerFlag) ? LARGE_POINTER_FLAG_96x96 : 0;
-
- Stream_Write_UINT16(s, largePointerSupportFlags); /* largePointerSupportFlags (2 bytes) */
-
+ largePointerSupportFlags = (settings->LargePointerFlag) ?
+ LARGE_POINTER_FLAG_96x96 : 0;
+ Stream_Write_UINT16(s,
+ largePointerSupportFlags); /* largePointerSupportFlags (2 bytes) */
rdp_capability_set_finish(s, header, CAPSET_TYPE_LARGE_POINTER);
return TRUE;
}
-BOOL rdp_print_large_pointer_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_large_pointer_capability_set(wStream* s, UINT16 length)
{
UINT16 largePointerSupportFlags;
WLog_INFO(TAG, "LargePointerCapabilitySet (length %d):", length);
if (length < 6)
return FALSE;
- Stream_Read_UINT16(s, largePointerSupportFlags); /* largePointerSupportFlags (2 bytes) */
+ Stream_Read_UINT16(s,
+ largePointerSupportFlags); /* largePointerSupportFlags (2 bytes) */
WLog_INFO(TAG, "\tlargePointerSupportFlags: 0x%04X", largePointerSupportFlags);
return TRUE;
}
* @return if the operation completed successfully
*/
-BOOL rdp_read_surface_commands_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_surface_commands_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
UINT32 cmdFlags;
Stream_Read_UINT32(s, cmdFlags); /* cmdFlags (4 bytes) */
Stream_Seek_UINT32(s); /* reserved (4 bytes) */
-
settings->SurfaceCommandsEnabled = TRUE;
- settings->SurfaceFrameMarkerEnabled = (cmdFlags & SURFCMDS_FRAME_MARKER) ? TRUE : FALSE;
-
+ settings->SurfaceFrameMarkerEnabled = (cmdFlags & SURFCMDS_FRAME_MARKER) ?
+ TRUE : FALSE;
return TRUE;
}
* @param settings settings
*/
-BOOL rdp_write_surface_commands_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_surface_commands_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
UINT32 cmdFlags;
return FALSE;
header = rdp_capability_set_start(s);
-
cmdFlags = SURFCMDS_SET_SURFACE_BITS | SURFCMDS_STREAM_SURFACE_BITS;
if (settings->SurfaceFrameMarkerEnabled)
Stream_Write_UINT32(s, cmdFlags); /* cmdFlags (4 bytes) */
Stream_Write_UINT32(s, 0); /* reserved (4 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_SURFACE_COMMANDS);
return TRUE;
}
-BOOL rdp_print_surface_commands_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_surface_commands_capability_set(wStream* s, UINT16 length)
{
UINT32 cmdFlags;
UINT32 reserved;
return TRUE;
}
-void rdp_print_bitmap_codec_guid(GUID* guid)
+static void rdp_print_bitmap_codec_guid(const GUID* guid)
{
WLog_INFO(TAG, "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X",
- guid->Data1, guid->Data2, guid->Data3,
- guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
- guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
+ guid->Data1, guid->Data2, guid->Data3,
+ guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
+ guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
}
-char* rdp_get_bitmap_codec_guid_name(GUID* guid)
+static char* rdp_get_bitmap_codec_guid_name(const GUID* guid)
{
RPC_STATUS rpc_status;
}
-void rdp_read_bitmap_codec_guid(wStream* s, GUID* guid)
+static void rdp_read_bitmap_codec_guid(wStream* s, GUID* guid)
{
BYTE g[16];
-
Stream_Read(s, g, 16);
-
guid->Data1 = (g[3] << 24) | (g[2] << 16) | (g[1] << 8) | g[0];
guid->Data2 = (g[5] << 8) | g[4];
guid->Data3 = (g[7] << 8) | g[6];
guid->Data4[7] = g[15];
}
-void rdp_write_bitmap_codec_guid(wStream* s, GUID* guid)
+static void rdp_write_bitmap_codec_guid(wStream* s, const GUID* guid)
{
BYTE g[16];
-
g[0] = guid->Data1 & 0xFF;
g[1] = (guid->Data1 >> 8) & 0xFF;
g[2] = (guid->Data1 >> 16) & 0xFF;
g[13] = guid->Data4[5];
g[14] = guid->Data4[6];
g[15] = guid->Data4[7];
-
Stream_Write(s, g, 16);
}
* @return if the operation completed successfully
*/
-BOOL rdp_read_bitmap_codecs_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_bitmap_codecs_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
BYTE codecId;
GUID codecGuid;
return FALSE;
rdp_read_bitmap_codec_guid(s, &codecGuid); /* codecGuid (16 bytes) */
-
Stream_Read_UINT8(s, codecId); /* codecId (1 byte) */
- Stream_Read_UINT16(s, codecPropertiesLength); /* codecPropertiesLength (2 bytes) */
+ Stream_Read_UINT16(s,
+ codecPropertiesLength); /* codecPropertiesLength (2 bytes) */
remainingLength -= 19;
if (remainingLength < codecPropertiesLength)
{
UINT32 beg;
UINT32 end;
-
beg = (UINT32) Stream_GetPosition(s);
end = beg + codecPropertiesLength;
UINT32 rfxCapsLength;
UINT32 rfxPropsLength;
UINT32 captureFlags;
-
guidRemoteFx = TRUE;
settings->RemoteFxCodecId = codecId;
-
Stream_Read_UINT32(s, rfxPropsLength); /* length (4 bytes) */
Stream_Read_UINT32(s, captureFlags); /* captureFlags (4 bytes) */
Stream_Read_UINT32(s, rfxCapsLength); /* capsLength (4 bytes) */
-
settings->RemoteFxCaptureFlags = captureFlags;
- settings->RemoteFxOnly = (captureFlags & CARDP_CAPS_CAPTURE_NON_CAC) ? TRUE : FALSE;
+ settings->RemoteFxOnly = (captureFlags & CARDP_CAPS_CAPTURE_NON_CAC) ? TRUE :
+ FALSE;
if (rfxCapsLength)
{
UINT16 capsetType;
UINT16 numIcaps;
UINT16 icapLen;
-
/* TS_RFX_CAPS */
-
Stream_Read_UINT16(s, blockType); /* blockType (2 bytes) */
Stream_Read_UINT32(s, blockLen); /* blockLen (4 bytes) */
Stream_Read_UINT16(s, numCapsets); /* numCapsets (2 bytes) */
return FALSE;
/* TS_RFX_CAPSET */
-
Stream_Read_UINT16(s, blockType); /* blockType (2 bytes) */
Stream_Read_UINT32(s, blockLen); /* blockLen (4 bytes) */
Stream_Read_UINT8(s, rfxCodecId); /* codecId (1 byte) */
BYTE colConvBits;
BYTE transformBits;
BYTE entropyBits;
-
/* TS_RFX_ICAP */
-
Stream_Read_UINT16(s, version); /* version (2 bytes) */
Stream_Read_UINT16(s, tileSize); /* tileSize (2 bytes) */
Stream_Read_UINT8(s, codecFlags); /* flags (1 byte) */
if (version == 0x0009)
{
/* Version 0.9 */
-
if (tileSize != 0x0080)
return FALSE;
}
else if (version == 0x0100)
{
/* Version 1.0 */
-
if (tileSize != 0x0040)
return FALSE;
}
else if (UuidEqual(&codecGuid, &CODEC_GUID_IMAGE_REMOTEFX, &rpc_status))
{
/* Microsoft RDP servers ignore CODEC_GUID_IMAGE_REMOTEFX codec properties */
-
guidRemoteFxImage = TRUE;
Stream_Seek(s, codecPropertiesLength); /* codecProperties */
}
BYTE colorLossLevel;
BYTE fAllowSubsampling;
BYTE fAllowDynamicFidelity;
-
guidNSCodec = TRUE;
settings->NSCodecId = codecId;
-
- Stream_Read_UINT8(s, fAllowDynamicFidelity); /* fAllowDynamicFidelity (1 byte) */
+ Stream_Read_UINT8(s,
+ fAllowDynamicFidelity); /* fAllowDynamicFidelity (1 byte) */
Stream_Read_UINT8(s, fAllowSubsampling); /* fAllowSubsampling (1 byte) */
Stream_Read_UINT8(s, colorLossLevel); /* colorLossLevel (1 byte) */
if (Stream_GetPosition(s) != end)
{
- WLog_ERR(TAG, "error while reading codec properties: actual offset: %d expected offset: %d",
- (int) Stream_GetPosition(s), end);
+ WLog_ERR(TAG,
+ "error while reading codec properties: actual offset: %d expected offset: %d",
+ (int) Stream_GetPosition(s), end);
Stream_SetPosition(s, end);
}
{
/* only enable a codec if we've announced/enabled it before */
settings->RemoteFxCodec = settings->RemoteFxCodec && guidRemoteFx;
- settings->RemoteFxImageCodec = settings->RemoteFxImageCodec && guidRemoteFxImage;
+ settings->RemoteFxImageCodec = settings->RemoteFxImageCodec
+ && guidRemoteFxImage;
settings->NSCodec = settings->NSCodec && guidNSCodec;
settings->JpegCodec = FALSE;
}
* @param s stream
* @param settings settings
*/
-BOOL rdp_write_rfx_client_capability_container(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_rfx_client_capability_container(wStream* s,
+ rdpSettings* settings)
{
UINT32 captureFlags;
BYTE codecMode;
captureFlags = settings->RemoteFxOnly ? 0 : CARDP_CAPS_CAPTURE_NON_CAC;
codecMode = settings->RemoteFxCodecMode;
-
Stream_Write_UINT16(s, 49); /* codecPropertiesLength */
-
/* TS_RFX_CLNT_CAPS_CONTAINER */
Stream_Write_UINT32(s, 49); /* length */
Stream_Write_UINT32(s, captureFlags); /* captureFlags */
Stream_Write_UINT32(s, 37); /* capsLength */
-
/* TS_RFX_CAPS */
Stream_Write_UINT16(s, CBY_CAPS); /* blockType */
Stream_Write_UINT32(s, 8); /* blockLen */
Stream_Write_UINT16(s, 1); /* numCapsets */
-
/* TS_RFX_CAPSET */
Stream_Write_UINT16(s, CBY_CAPSET); /* blockType */
Stream_Write_UINT32(s, 29); /* blockLen */
Stream_Write_UINT16(s, CLY_CAPSET); /* capsetType */
Stream_Write_UINT16(s, 2); /* numIcaps */
Stream_Write_UINT16(s, 8); /* icapLen */
-
/* TS_RFX_ICAP (RLGR1) */
Stream_Write_UINT16(s, CLW_VERSION_1_0); /* version */
Stream_Write_UINT16(s, CT_TILE_64x64); /* tileSize */
Stream_Write_UINT8(s, CLW_COL_CONV_ICT); /* colConvBits */
Stream_Write_UINT8(s, CLW_XFORM_DWT_53_A); /* transformBits */
Stream_Write_UINT8(s, CLW_ENTROPY_RLGR1); /* entropyBits */
-
/* TS_RFX_ICAP (RLGR3) */
Stream_Write_UINT16(s, CLW_VERSION_1_0); /* version */
Stream_Write_UINT16(s, CT_TILE_64x64); /* tileSize */
* @param s stream
* @param settings settings
*/
-BOOL rdp_write_nsc_client_capability_container(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_nsc_client_capability_container(wStream* s,
+ rdpSettings* settings)
{
BYTE colorLossLevel;
BYTE fAllowSubsampling;
BYTE fAllowDynamicFidelity;
-
fAllowDynamicFidelity = settings->NSCodecAllowDynamicColorFidelity;
fAllowSubsampling = settings->NSCodecAllowSubsampling;
colorLossLevel = settings->NSCodecColorLossLevel;
return FALSE;
Stream_Write_UINT16(s, 3); /* codecPropertiesLength */
-
/* TS_NSCODEC_CAPABILITYSET */
- Stream_Write_UINT8(s, fAllowDynamicFidelity); /* fAllowDynamicFidelity (1 byte) */
+ Stream_Write_UINT8(s,
+ fAllowDynamicFidelity); /* fAllowDynamicFidelity (1 byte) */
Stream_Write_UINT8(s, fAllowSubsampling); /* fAllowSubsampling (1 byte) */
Stream_Write_UINT8(s, colorLossLevel); /* colorLossLevel (1 byte) */
return TRUE;
}
-BOOL rdp_write_jpeg_client_capability_container(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_jpeg_client_capability_container(wStream* s,
+ rdpSettings* settings)
{
if (!Stream_EnsureRemainingCapacity(s, 8))
return FALSE;
* @param s stream
* @param settings settings
*/
-BOOL rdp_write_rfx_server_capability_container(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_rfx_server_capability_container(wStream* s,
+ rdpSettings* settings)
{
if (!Stream_EnsureRemainingCapacity(s, 8))
return FALSE;
return TRUE;
}
-BOOL rdp_write_jpeg_server_capability_container(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_jpeg_server_capability_container(wStream* s,
+ rdpSettings* settings)
{
if (!Stream_EnsureRemainingCapacity(s, 8))
return FALSE;
* @param s stream
* @param settings settings
*/
-BOOL rdp_write_nsc_server_capability_container(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_nsc_server_capability_container(wStream* s,
+ rdpSettings* settings)
{
if (!Stream_EnsureRemainingCapacity(s, 8))
return FALSE;
* @param settings settings
*/
-BOOL rdp_write_bitmap_codecs_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_bitmap_codecs_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
BYTE bitmapCodecCount;
return FALSE;
header = rdp_capability_set_start(s);
-
bitmapCodecCount = 0;
if (settings->RemoteFxCodec)
bitmapCodecCount++;
+
if (settings->NSCodec)
bitmapCodecCount++;
+
if (settings->JpegCodec)
bitmapCodecCount++;
+
if (settings->RemoteFxImageCodec)
bitmapCodecCount++;
if (settings->ServerMode)
{
Stream_Write_UINT8(s, 0); /* codecID is defined by the client */
+
if (!rdp_write_rfx_server_capability_container(s, settings))
return FALSE;
}
else
{
Stream_Write_UINT8(s, RDP_CODEC_ID_REMOTEFX); /* codecID */
+
if (!rdp_write_rfx_client_capability_container(s, settings))
return FALSE;
}
if (settings->ServerMode)
{
Stream_Write_UINT8(s, 0); /* codecID is defined by the client */
+
if (!rdp_write_nsc_server_capability_container(s, settings))
return FALSE;
}
else
{
Stream_Write_UINT8(s, RDP_CODEC_ID_NSCODEC); /* codecID */
+
if (!rdp_write_nsc_client_capability_container(s, settings))
return FALSE;
}
if (settings->ServerMode)
{
Stream_Write_UINT8(s, 0); /* codecID is defined by the client */
+
if (!rdp_write_jpeg_server_capability_container(s, settings))
return FALSE;
}
else
{
Stream_Write_UINT8(s, RDP_CODEC_ID_JPEG); /* codecID */
+
if (!rdp_write_jpeg_client_capability_container(s, settings))
return FALSE;
}
if (settings->ServerMode)
{
Stream_Write_UINT8(s, 0); /* codecID is defined by the client */
+
if (!rdp_write_rfx_server_capability_container(s, settings))
return FALSE;
}
else
{
Stream_Write_UINT8(s, RDP_CODEC_ID_IMAGE_REMOTEFX); /* codecID */
+
if (!rdp_write_rfx_client_capability_container(s, settings))
return FALSE;
}
return TRUE;
}
-BOOL rdp_print_bitmap_codecs_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_bitmap_codecs_capability_set(wStream* s, UINT16 length)
{
GUID codecGuid;
BYTE bitmapCodecCount;
rdp_print_bitmap_codec_guid(&codecGuid);
WLog_INFO(TAG, " (%s)", rdp_get_bitmap_codec_guid_name(&codecGuid));
WLog_INFO(TAG, "\tcodecId: %d", codecId);
- Stream_Read_UINT16(s, codecPropertiesLength); /* codecPropertiesLength (2 bytes) */
+ Stream_Read_UINT16(s,
+ codecPropertiesLength); /* codecPropertiesLength (2 bytes) */
WLog_INFO(TAG, "\tcodecPropertiesLength: %d", codecPropertiesLength);
remainingLength -= 19;
Stream_Seek(s, codecPropertiesLength); /* codecProperties */
remainingLength -= codecPropertiesLength;
-
bitmapCodecCount--;
}
* @return if the operation completed successfully
*/
-BOOL rdp_read_frame_acknowledge_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_frame_acknowledge_capability_set(wStream* s, UINT16 length,
+ rdpSettings* settings)
{
if (length < 8)
return FALSE;
* @param settings settings
*/
-BOOL rdp_write_frame_acknowledge_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_frame_acknowledge_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
return FALSE;
header = rdp_capability_set_start(s);
-
Stream_Write_UINT32(s, settings->FrameAcknowledge); /* (4 bytes) */
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_FRAME_ACKNOWLEDGE);
return TRUE;
}
-BOOL rdp_print_frame_acknowledge_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_frame_acknowledge_capability_set(wStream* s,
+ UINT16 length)
{
UINT32 frameAcknowledge;
WLog_INFO(TAG, "FrameAcknowledgeCapabilitySet (length %d):", length);
return TRUE;
}
-BOOL rdp_read_bitmap_cache_v3_codec_id_capability_set(wStream* s, UINT16 length, rdpSettings* settings)
+static BOOL rdp_read_bitmap_cache_v3_codec_id_capability_set(wStream* s,
+ UINT16 length, rdpSettings* settings)
{
BYTE bitmapCacheV3CodecId;
return FALSE;
Stream_Read_UINT8(s, bitmapCacheV3CodecId); /* bitmapCacheV3CodecId (1 byte) */
-
return TRUE;
}
-BOOL rdp_write_bitmap_cache_v3_codec_id_capability_set(wStream* s, rdpSettings* settings)
+static BOOL rdp_write_bitmap_cache_v3_codec_id_capability_set(wStream* s,
+ rdpSettings* settings)
{
int header;
header = rdp_capability_set_start(s);
Stream_Write_UINT8(s, settings->BitmapCacheV3CodecId);
-
rdp_capability_set_finish(s, header, CAPSET_TYPE_BITMAP_CACHE_V3_CODEC_ID);
return TRUE;
}
-BOOL rdp_print_bitmap_cache_v3_codec_id_capability_set(wStream* s, UINT16 length)
+static BOOL rdp_print_bitmap_cache_v3_codec_id_capability_set(wStream* s,
+ UINT16 length)
{
BYTE bitmapCacheV3CodecId;
WLog_INFO(TAG, "BitmapCacheV3CodecIdCapabilitySet (length %d):", length);
return TRUE;
}
-BOOL rdp_print_capability_sets(wStream* s, UINT16 numberCapabilities, BOOL receiving)
+static BOOL rdp_print_capability_sets(wStream* s, UINT16 numberCapabilities,
+ BOOL receiving)
{
UINT16 type;
UINT16 length;
- BYTE *bm, *em;
+ BYTE* bm, *em;
while (numberCapabilities > 0)
{
Stream_GetPointer(s, bm);
-
rdp_read_capability_set_header(s, &length, &type);
WLog_INFO(TAG, "%s ", receiving ? "Receiving" : "Sending");
em = bm + length;
- if (Stream_GetRemainingLength(s) < (size_t) (length - 4))
+ if (Stream_GetRemainingLength(s) < (size_t)(length - 4))
{
WLog_ERR(TAG, "error processing stream");
return FALSE;
case CAPSET_TYPE_GENERAL:
if (!rdp_print_general_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_BITMAP:
if (!rdp_print_bitmap_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_ORDER:
if (!rdp_print_order_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_BITMAP_CACHE:
if (!rdp_print_bitmap_cache_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_CONTROL:
if (!rdp_print_control_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_ACTIVATION:
if (!rdp_print_window_activation_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_POINTER:
if (!rdp_print_pointer_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_SHARE:
if (!rdp_print_share_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_COLOR_CACHE:
if (!rdp_print_color_cache_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_SOUND:
if (!rdp_print_sound_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_INPUT:
if (!rdp_print_input_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_FONT:
if (!rdp_print_font_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_BRUSH:
if (!rdp_print_brush_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_GLYPH_CACHE:
if (!rdp_print_glyph_cache_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_OFFSCREEN_CACHE:
if (!rdp_print_offscreen_bitmap_cache_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_BITMAP_CACHE_HOST_SUPPORT:
if (!rdp_print_bitmap_cache_host_support_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_BITMAP_CACHE_V2:
if (!rdp_print_bitmap_cache_v2_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_VIRTUAL_CHANNEL:
if (!rdp_print_virtual_channel_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_DRAW_NINE_GRID_CACHE:
if (!rdp_print_draw_nine_grid_cache_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_DRAW_GDI_PLUS:
if (!rdp_print_draw_gdiplus_cache_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_RAIL:
if (!rdp_print_remote_programs_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_WINDOW:
if (!rdp_print_window_list_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_COMP_DESK:
if (!rdp_print_desktop_composition_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_MULTI_FRAGMENT_UPDATE:
if (!rdp_print_multifragment_update_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_LARGE_POINTER:
if (!rdp_print_large_pointer_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_SURFACE_COMMANDS:
if (!rdp_print_surface_commands_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_BITMAP_CODECS:
if (!rdp_print_bitmap_codecs_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_FRAME_ACKNOWLEDGE:
if (!rdp_print_frame_acknowledge_capability_set(s, length))
return FALSE;
+
break;
case CAPSET_TYPE_BITMAP_CACHE_V3_CODEC_ID:
if (!rdp_print_bitmap_cache_v3_codec_id_capability_set(s, length))
return FALSE;
+
break;
default:
if (Stream_Pointer(s) != em)
{
WLog_ERR(TAG, "incorrect offset, type:0x%02X actual:%d expected:%d",
- type, (int)(Stream_Pointer(s) - bm), (int)(em - bm));
+ type, (int)(Stream_Pointer(s) - bm), (int)(em - bm));
}
Stream_SetPointer(s, em);
return TRUE;
}
-BOOL rdp_read_capability_sets(wStream* s, rdpSettings* settings, UINT16 numberCapabilities)
+static BOOL rdp_read_capability_sets(wStream* s, rdpSettings* settings,
+ UINT16 numberCapabilities)
{
BYTE* mark;
UINT16 count;
UINT16 type;
UINT16 length;
- BYTE *bm, *em;
+ BYTE* bm, *em;
BOOL treated;
-
Stream_GetPointer(s, mark);
count = numberCapabilities;
while (numberCapabilities > 0 && Stream_GetRemainingLength(s) >= 4)
{
Stream_GetPointer(s, bm);
-
rdp_read_capability_set_header(s, &length, &type);
if (type < 32)
}
treated = TRUE;
+
switch (type)
{
case CAPSET_TYPE_GENERAL:
if (!rdp_read_general_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_BITMAP:
if (!rdp_read_bitmap_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_ORDER:
if (!rdp_read_order_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_POINTER:
if (!rdp_read_pointer_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_INPUT:
if (!rdp_read_input_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_VIRTUAL_CHANNEL:
if (!rdp_read_virtual_channel_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_SHARE:
if (!rdp_read_share_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_COLOR_CACHE:
if (!rdp_read_color_cache_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_FONT:
if (!rdp_read_font_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_DRAW_GDI_PLUS:
if (!rdp_read_draw_gdiplus_cache_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_RAIL:
if (!rdp_read_remote_programs_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_WINDOW:
if (!rdp_read_window_list_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_MULTI_FRAGMENT_UPDATE:
if (!rdp_read_multifragment_update_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_LARGE_POINTER:
if (!rdp_read_large_pointer_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_COMP_DESK:
if (!rdp_read_desktop_composition_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_SURFACE_COMMANDS:
if (!rdp_read_surface_commands_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_BITMAP_CODECS:
if (!rdp_read_bitmap_codecs_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_FRAME_ACKNOWLEDGE:
if (!rdp_read_frame_acknowledge_capability_set(s, length, settings))
return FALSE;
+
break;
case CAPSET_TYPE_BITMAP_CACHE_V3_CODEC_ID:
if (!rdp_read_bitmap_cache_v3_codec_id_capability_set(s, length, settings))
return FALSE;
+
break;
default:
/* treating capabilities that are supposed to be send only from the client */
switch (type)
{
- case CAPSET_TYPE_BITMAP_CACHE:
- if (!rdp_read_bitmap_cache_capability_set(s, length, settings))
- return FALSE;
- break;
+ case CAPSET_TYPE_BITMAP_CACHE:
+ if (!rdp_read_bitmap_cache_capability_set(s, length, settings))
+ return FALSE;
- case CAPSET_TYPE_BITMAP_CACHE_V2:
- if (!rdp_read_bitmap_cache_v2_capability_set(s, length, settings))
- return FALSE;
- break;
+ break;
- case CAPSET_TYPE_BRUSH:
- if (!rdp_read_brush_capability_set(s, length, settings))
- return FALSE;
- break;
+ case CAPSET_TYPE_BITMAP_CACHE_V2:
+ if (!rdp_read_bitmap_cache_v2_capability_set(s, length, settings))
+ return FALSE;
- case CAPSET_TYPE_GLYPH_CACHE:
- if (!rdp_read_glyph_cache_capability_set(s, length, settings))
- return FALSE;
- break;
+ break;
- case CAPSET_TYPE_OFFSCREEN_CACHE:
- if (!rdp_read_offscreen_bitmap_cache_capability_set(s, length, settings))
- return FALSE;
- break;
+ case CAPSET_TYPE_BRUSH:
+ if (!rdp_read_brush_capability_set(s, length, settings))
+ return FALSE;
- case CAPSET_TYPE_SOUND:
- if (!rdp_read_sound_capability_set(s, length, settings))
- return FALSE;
- break;
+ break;
- case CAPSET_TYPE_CONTROL:
- if (!rdp_read_control_capability_set(s, length, settings))
- return FALSE;
- break;
+ case CAPSET_TYPE_GLYPH_CACHE:
+ if (!rdp_read_glyph_cache_capability_set(s, length, settings))
+ return FALSE;
- case CAPSET_TYPE_ACTIVATION:
- if (!rdp_read_window_activation_capability_set(s, length, settings))
- return FALSE;
- break;
+ break;
- case CAPSET_TYPE_DRAW_NINE_GRID_CACHE:
- if (!rdp_read_draw_nine_grid_cache_capability_set(s, length, settings))
- return FALSE;
- break;
+ case CAPSET_TYPE_OFFSCREEN_CACHE:
+ if (!rdp_read_offscreen_bitmap_cache_capability_set(s, length, settings))
+ return FALSE;
- default:
- WLog_ERR(TAG, "capability %s(%d) not expected from client", get_capability_name(type), type);
- return FALSE;
+ break;
+
+ case CAPSET_TYPE_SOUND:
+ if (!rdp_read_sound_capability_set(s, length, settings))
+ return FALSE;
+
+ break;
+
+ case CAPSET_TYPE_CONTROL:
+ if (!rdp_read_control_capability_set(s, length, settings))
+ return FALSE;
+
+ break;
+
+ case CAPSET_TYPE_ACTIVATION:
+ if (!rdp_read_window_activation_capability_set(s, length, settings))
+ return FALSE;
+
+ break;
+
+ case CAPSET_TYPE_DRAW_NINE_GRID_CACHE:
+ if (!rdp_read_draw_nine_grid_cache_capability_set(s, length, settings))
+ return FALSE;
+
+ break;
+
+ default:
+ WLog_ERR(TAG, "capability %s(%d) not expected from client",
+ get_capability_name(type), type);
+ return FALSE;
}
}
else
/* treating capabilities that are supposed to be send only from the server */
switch (type)
{
- case CAPSET_TYPE_BITMAP_CACHE_HOST_SUPPORT:
- if (!rdp_read_bitmap_cache_host_support_capability_set(s, length, settings))
- return FALSE;
- break;
+ case CAPSET_TYPE_BITMAP_CACHE_HOST_SUPPORT:
+ if (!rdp_read_bitmap_cache_host_support_capability_set(s, length, settings))
+ return FALSE;
- default:
- WLog_ERR(TAG, "capability %s(%d) not expected from server", get_capability_name(type), type);
- return FALSE;
+ break;
+
+ default:
+ WLog_ERR(TAG, "capability %s(%d) not expected from server",
+ get_capability_name(type), type);
+ return FALSE;
}
}
}
if (Stream_Pointer(s) != em)
{
WLog_ERR(TAG, "incorrect offset, type:0x%02X actual:%d expected:%d",
- type, (int)(Stream_Pointer(s) - bm), (int)(em - bm));
+ type, (int)(Stream_Pointer(s) - bm), (int)(em - bm));
}
Stream_SetPointer(s, em);
if (numberCapabilities)
{
- WLog_ERR(TAG, "strange we haven't read the number of announced capacity sets, read=%d expected=%d",
- count-numberCapabilities, count);
+ WLog_ERR(TAG,
+ "strange we haven't read the number of announced capacity sets, read=%d expected=%d",
+ count - numberCapabilities, count);
}
#ifdef WITH_DEBUG_CAPABILITIES
rdp_print_capability_sets(s, numberCapabilities, TRUE);
Stream_SetPointer(s, em);
#endif
-
return TRUE;
}
* We can receive a Save Session Info Data PDU containing a LogonErrorInfo
* structure at this point from the server to indicate a connection error.
*/
-
if (rdp_recv_data_pdu(rdp, s) < 0)
return FALSE;
if (pduType != PDU_TYPE_DEMAND_ACTIVE)
{
if (pduType != PDU_TYPE_SERVER_REDIRECTION)
- WLog_ERR(TAG, "expected PDU_TYPE_DEMAND_ACTIVE %04x, got %04x", PDU_TYPE_DEMAND_ACTIVE, pduType);
+ WLog_ERR(TAG, "expected PDU_TYPE_DEMAND_ACTIVE %04x, got %04x",
+ PDU_TYPE_DEMAND_ACTIVE, pduType);
return FALSE;
}
return FALSE;
Stream_Read_UINT32(s, rdp->settings->ShareId); /* shareId (4 bytes) */
- Stream_Read_UINT16(s, lengthSourceDescriptor); /* lengthSourceDescriptor (2 bytes) */
- Stream_Read_UINT16(s, lengthCombinedCapabilities); /* lengthCombinedCapabilities (2 bytes) */
+ Stream_Read_UINT16(s,
+ lengthSourceDescriptor); /* lengthSourceDescriptor (2 bytes) */
+ Stream_Read_UINT16(s,
+ lengthCombinedCapabilities); /* lengthCombinedCapabilities (2 bytes) */
- if (!Stream_SafeSeek(s, lengthSourceDescriptor) || Stream_GetRemainingLength(s) < 4) /* sourceDescriptor */
+ if (!Stream_SafeSeek(s, lengthSourceDescriptor)
+ || Stream_GetRemainingLength(s) < 4) /* sourceDescriptor */
return FALSE;
Stream_Read_UINT16(s, numberCapabilities); /* numberCapabilities (2 bytes) */
return FALSE;
}
- rdp->update->secondary->glyph_v2 = (rdp->settings->GlyphSupportLevel > GLYPH_SUPPORT_FULL) ? TRUE : FALSE;
-
+ rdp->update->secondary->glyph_v2 = (rdp->settings->GlyphSupportLevel >
+ GLYPH_SUPPORT_FULL) ? TRUE : FALSE;
return TRUE;
}
Stream_Write_UINT32(s, settings->ShareId); /* shareId (4 bytes) */
Stream_Write_UINT16(s, 4); /* lengthSourceDescriptor (2 bytes) */
-
lm = Stream_GetPosition(s);
Stream_Seek_UINT16(s); /* lengthCombinedCapabilities (2 bytes) */
Stream_Write(s, "RDP", 4); /* sourceDescriptor */
-
bm = Stream_GetPosition(s);
Stream_Seek_UINT16(s); /* numberCapabilities (2 bytes) */
Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */
-
numberCapabilities = 14;
+
if (!rdp_write_general_capability_set(s, settings) ||
- !rdp_write_bitmap_capability_set(s, settings) ||
- !rdp_write_order_capability_set(s, settings) ||
- !rdp_write_pointer_capability_set(s, settings) ||
- !rdp_write_input_capability_set(s, settings) ||
- !rdp_write_virtual_channel_capability_set(s, settings) ||
- !rdp_write_share_capability_set(s, settings) ||
- !rdp_write_font_capability_set(s, settings) ||
- !rdp_write_multifragment_update_capability_set(s, settings) ||
- !rdp_write_large_pointer_capability_set(s, settings) ||
- !rdp_write_desktop_composition_capability_set(s, settings) ||
- !rdp_write_surface_commands_capability_set(s, settings) ||
- !rdp_write_bitmap_codecs_capability_set(s, settings) ||
- !rdp_write_frame_acknowledge_capability_set(s, settings))
+ !rdp_write_bitmap_capability_set(s, settings) ||
+ !rdp_write_order_capability_set(s, settings) ||
+ !rdp_write_pointer_capability_set(s, settings) ||
+ !rdp_write_input_capability_set(s, settings) ||
+ !rdp_write_virtual_channel_capability_set(s, settings) ||
+ !rdp_write_share_capability_set(s, settings) ||
+ !rdp_write_font_capability_set(s, settings) ||
+ !rdp_write_multifragment_update_capability_set(s, settings) ||
+ !rdp_write_large_pointer_capability_set(s, settings) ||
+ !rdp_write_desktop_composition_capability_set(s, settings) ||
+ !rdp_write_surface_commands_capability_set(s, settings) ||
+ !rdp_write_bitmap_codecs_capability_set(s, settings) ||
+ !rdp_write_frame_acknowledge_capability_set(s, settings))
{
return FALSE;
}
if (settings->BitmapCachePersistEnabled)
{
numberCapabilities++;
+
if (!rdp_write_bitmap_cache_host_support_capability_set(s, settings))
return FALSE;
}
em = Stream_GetPosition(s);
-
Stream_SetPosition(s, lm); /* go back to lengthCombinedCapabilities */
lengthCombinedCapabilities = (em - bm);
- Stream_Write_UINT16(s, lengthCombinedCapabilities); /* lengthCombinedCapabilities (2 bytes) */
-
+ Stream_Write_UINT16(s,
+ lengthCombinedCapabilities); /* lengthCombinedCapabilities (2 bytes) */
Stream_SetPosition(s, bm); /* go back to numberCapabilities */
Stream_Write_UINT16(s, numberCapabilities); /* numberCapabilities (2 bytes) */
-
#ifdef WITH_DEBUG_CAPABILITIES
Stream_Seek_UINT16(s);
rdp_print_capability_sets(s, numberCapabilities, FALSE);
Stream_SetPosition(s, bm);
Stream_Seek_UINT16(s);
#endif
-
Stream_SetPosition(s, em);
-
Stream_Write_UINT32(s, 0); /* sessionId */
return TRUE;
}
return FALSE;
rdp_init_stream_pdu(rdp, s);
-
rdp->settings->ShareId = 0x10000 + rdp->mcs->userId;
-
status = rdp_write_demand_active(s, rdp->settings) &&
- rdp_send_pdu(rdp, s, PDU_TYPE_DEMAND_ACTIVE, rdp->mcs->userId);
-
+ rdp_send_pdu(rdp, s, PDU_TYPE_DEMAND_ACTIVE, rdp->mcs->userId);
Stream_Free(s, TRUE);
-
return status;
}
UINT16 lengthSourceDescriptor;
UINT16 lengthCombinedCapabilities;
UINT16 numberCapabilities;
-
settings = rdp->settings;
if (Stream_GetRemainingLength(s) < 10)
Stream_Seek_UINT32(s); /* shareId (4 bytes) */
Stream_Seek_UINT16(s); /* originatorId (2 bytes) */
- Stream_Read_UINT16(s, lengthSourceDescriptor); /* lengthSourceDescriptor (2 bytes) */
- Stream_Read_UINT16(s, lengthCombinedCapabilities); /* lengthCombinedCapabilities (2 bytes) */
+ Stream_Read_UINT16(s,
+ lengthSourceDescriptor); /* lengthSourceDescriptor (2 bytes) */
+ Stream_Read_UINT16(s,
+ lengthCombinedCapabilities); /* lengthCombinedCapabilities (2 bytes) */
if (((int) Stream_GetRemainingLength(s)) < lengthSourceDescriptor + 4)
return FALSE;
Stream_Seek(s, lengthSourceDescriptor); /* sourceDescriptor */
Stream_Read_UINT16(s, numberCapabilities); /* numberCapabilities (2 bytes) */
Stream_Seek(s, 2); /* pad2Octets (2 bytes) */
-
status = rdp_read_capability_sets(s, rdp->settings, numberCapabilities);
if (!settings->ReceivedCapabilities[CAPSET_TYPE_SURFACE_COMMANDS])
if (!settings->ReceivedCapabilities[CAPSET_TYPE_BITMAP_CODECS])
{
/* client does not support bitmap codecs */
-
settings->RemoteFxCodec = FALSE;
settings->NSCodec = FALSE;
settings->JpegCodec = FALSE;
UINT16 lengthSourceDescriptor;
UINT16 lengthCombinedCapabilities;
BOOL ret;
-
lengthSourceDescriptor = sizeof(SOURCE_DESCRIPTOR);
-
Stream_Write_UINT32(s, settings->ShareId); /* shareId (4 bytes) */
Stream_Write_UINT16(s, 0x03EA); /* originatorId (2 bytes) */
- Stream_Write_UINT16(s, lengthSourceDescriptor);/* lengthSourceDescriptor (2 bytes) */
-
+ Stream_Write_UINT16(s,
+ lengthSourceDescriptor);/* lengthSourceDescriptor (2 bytes) */
lm = Stream_GetPosition(s);
Stream_Seek_UINT16(s); /* lengthCombinedCapabilities (2 bytes) */
- Stream_Write(s, SOURCE_DESCRIPTOR, lengthSourceDescriptor); /* sourceDescriptor */
-
+ Stream_Write(s, SOURCE_DESCRIPTOR,
+ lengthSourceDescriptor); /* sourceDescriptor */
bm = Stream_GetPosition(s);
Stream_Seek_UINT16(s); /* numberCapabilities (2 bytes) */
Stream_Write_UINT16(s, 0); /* pad2Octets (2 bytes) */
-
/* Capability Sets */
numberCapabilities = 15;
+
if (!rdp_write_general_capability_set(s, settings) ||
- !rdp_write_bitmap_capability_set(s, settings) ||
- !rdp_write_order_capability_set(s, settings))
+ !rdp_write_bitmap_capability_set(s, settings) ||
+ !rdp_write_order_capability_set(s, settings))
return FALSE;
if (settings->RdpVersion >= 5)
return FALSE;
if (!rdp_write_pointer_capability_set(s, settings) ||
- !rdp_write_input_capability_set(s, settings) ||
- !rdp_write_brush_capability_set(s, settings) ||
- !rdp_write_glyph_cache_capability_set(s, settings) ||
- !rdp_write_virtual_channel_capability_set(s, settings) ||
- !rdp_write_sound_capability_set(s, settings) ||
- !rdp_write_share_capability_set(s, settings) ||
- !rdp_write_font_capability_set(s, settings) ||
- !rdp_write_control_capability_set(s, settings) ||
- !rdp_write_color_cache_capability_set(s, settings) ||
- !rdp_write_window_activation_capability_set(s, settings))
+ !rdp_write_input_capability_set(s, settings) ||
+ !rdp_write_brush_capability_set(s, settings) ||
+ !rdp_write_glyph_cache_capability_set(s, settings) ||
+ !rdp_write_virtual_channel_capability_set(s, settings) ||
+ !rdp_write_sound_capability_set(s, settings) ||
+ !rdp_write_share_capability_set(s, settings) ||
+ !rdp_write_font_capability_set(s, settings) ||
+ !rdp_write_control_capability_set(s, settings) ||
+ !rdp_write_color_cache_capability_set(s, settings) ||
+ !rdp_write_window_activation_capability_set(s, settings))
{
return FALSE;
}
if (settings->OffscreenSupportLevel)
{
numberCapabilities++;
+
if (!rdp_write_offscreen_bitmap_cache_capability_set(s, settings))
return FALSE;
}
if (settings->DrawNineGridEnabled)
{
numberCapabilities++;
+
if (!rdp_write_draw_nine_grid_cache_capability_set(s, settings))
return FALSE;
}
if (settings->LargePointerFlag)
{
numberCapabilities++;
+
if (!rdp_write_large_pointer_capability_set(s, settings))
return FALSE;
}
if (settings->RemoteApplicationMode)
{
numberCapabilities += 2;
+
if (!rdp_write_remote_programs_capability_set(s, settings) ||
- !rdp_write_window_list_capability_set(s, settings))
+ !rdp_write_window_list_capability_set(s, settings))
return FALSE;
}
if (settings->ReceivedCapabilities[CAPSET_TYPE_MULTI_FRAGMENT_UPDATE])
{
numberCapabilities++;
+
if (!rdp_write_multifragment_update_capability_set(s, settings))
return FALSE;
}
if (settings->ReceivedCapabilities[CAPSET_TYPE_SURFACE_COMMANDS])
{
numberCapabilities++;
+
if (!rdp_write_surface_commands_capability_set(s, settings))
return FALSE;
}
if (settings->ReceivedCapabilities[CAPSET_TYPE_BITMAP_CODECS])
{
numberCapabilities++;
+
if (!rdp_write_bitmap_codecs_capability_set(s, settings))
return FALSE;
}
if (settings->FrameAcknowledge)
{
numberCapabilities++;
+
if (!rdp_write_frame_acknowledge_capability_set(s, settings))
return FALSE;
}
if (settings->BitmapCacheV3CodecId != 0)
{
numberCapabilities++;
+
if (!rdp_write_bitmap_cache_v3_codec_id_capability_set(s, settings))
return FALSE;
}
}
em = Stream_GetPosition(s);
-
Stream_SetPosition(s, lm); /* go back to lengthCombinedCapabilities */
lengthCombinedCapabilities = (em - bm);
- Stream_Write_UINT16(s, lengthCombinedCapabilities); /* lengthCombinedCapabilities (2 bytes) */
-
+ Stream_Write_UINT16(s,
+ lengthCombinedCapabilities); /* lengthCombinedCapabilities (2 bytes) */
Stream_SetPosition(s, bm); /* go back to numberCapabilities */
Stream_Write_UINT16(s, numberCapabilities); /* numberCapabilities (2 bytes) */
-
#ifdef WITH_DEBUG_CAPABILITIES
Stream_Seek_UINT16(s);
rdp_print_capability_sets(s, numberCapabilities, FALSE);
Stream_SetPosition(s, bm);
Stream_Seek_UINT16(s);
#endif
-
Stream_SetPosition(s, em);
return TRUE;
}
return FALSE;
rdp_init_stream_pdu(rdp, s);
-
status = rdp_write_confirm_active(s, rdp->settings) &&
- rdp_send_pdu(rdp, s, PDU_TYPE_CONFIRM_ACTIVE, rdp->mcs->userId);
-
+ rdp_send_pdu(rdp, s, PDU_TYPE_CONFIRM_ACTIVE, rdp->mcs->userId);
Stream_Free(s, TRUE);
-
return status;
}