void rail_send_client_sysparam_order(rdpRailOrder* rail_order) { STREAM* s; int length; length = RAIL_SYSPARAM_ORDER_LENGTH; switch (rail_order->sysparam.param) { case SPI_SET_DRAG_FULL_WINDOWS: case SPI_SET_KEYBOARD_CUES: case SPI_SET_KEYBOARD_PREF: case SPI_SET_MOUSE_BUTTON_SWAP: length += 1; break; case SPI_SET_WORK_AREA: case SPI_DISPLAY_CHANGE: case SPI_TASKBAR_POS: length += 8; break; case SPI_SET_HIGH_CONTRAST: length += rail_order->sysparam.highContrast.colorSchemeLength + 10; break; } s = rail_pdu_init(RAIL_SYSPARAM_ORDER_LENGTH + 8); rail_write_client_sysparam_order(s, &rail_order->sysparam); rail_send_pdu(rail_order, s, RAIL_ORDER_TYPE_SYSPARAM); }
void rail_send_client_sysparam(RailClientContext* context, RAIL_SYSPARAM_ORDER* sysparam) { wStream* s; int length; railPlugin* rail = (railPlugin*) context->handle; length = RAIL_SYSPARAM_ORDER_LENGTH; switch (sysparam->param) { case SPI_SET_DRAG_FULL_WINDOWS: case SPI_SET_KEYBOARD_CUES: case SPI_SET_KEYBOARD_PREF: case SPI_SET_MOUSE_BUTTON_SWAP: length += 1; break; case SPI_SET_WORK_AREA: case SPI_DISPLAY_CHANGE: case SPI_TASKBAR_POS: length += 8; break; case SPI_SET_HIGH_CONTRAST: length += sysparam->highContrast.colorSchemeLength + 10; break; } s = rail_pdu_init(RAIL_SYSPARAM_ORDER_LENGTH + 8); rail_write_client_sysparam_order(s, sysparam); rail_send_pdu(rail, s, RDP_RAIL_ORDER_SYSPARAM); Stream_Free(s, TRUE); }
/** * Function description * * @return 0 on success, otherwise a Win32 error code */ static UINT rail_send_client_sysparam(RailClientContext* context, RAIL_SYSPARAM_ORDER* sysparam) { wStream* s; int length; railPlugin* rail = (railPlugin*) context->handle; UINT error; length = RAIL_SYSPARAM_ORDER_LENGTH; switch (sysparam->param) { case SPI_SET_DRAG_FULL_WINDOWS: case SPI_SET_KEYBOARD_CUES: case SPI_SET_KEYBOARD_PREF: case SPI_SET_MOUSE_BUTTON_SWAP: length += 1; break; case SPI_SET_WORK_AREA: case SPI_DISPLAY_CHANGE: case SPI_TASKBAR_POS: length += 8; break; case SPI_SET_HIGH_CONTRAST: length += sysparam->highContrast.colorSchemeLength + 10; break; } s = rail_pdu_init(RAIL_SYSPARAM_ORDER_LENGTH + 8); if (!s) { WLog_ERR(TAG, "rail_pdu_init failed!"); return CHANNEL_RC_NO_MEMORY; } if ((error = rail_write_client_sysparam_order(s, sysparam))) { WLog_ERR(TAG, "rail_write_client_sysparam_order failed with error %"PRIu32"!", error); Stream_Free(s, TRUE); return error; } if ((error = rail_send_pdu(rail, s, RDP_RAIL_ORDER_SYSPARAM))) { WLog_ERR(TAG, "rail_send_pdu failed with error %"PRIu32"!", error); } Stream_Free(s, TRUE); return error; }