FreeRDP
fastpath.h File Reference
#include "rdp.h"
#include <winpr/stream.h>
#include <freerdp/api.h>
This graph shows which files directly or indirectly include this file:

Data Structures

struct  FASTPATH_UPDATE_PDU_HEADER
 
struct  FASTPATH_UPDATE_HEADER
 

Macros

#define FASTPATH_MAX_PACKET_SIZE   0x3FFF
 
#define FASTPATH_FRAGMENT_SAFE_SIZE   0x3F80
 

Enumerations

enum  FASTPATH_INPUT_ACTION_TYPE { FASTPATH_INPUT_ACTION_FASTPATH = 0x0 , FASTPATH_INPUT_ACTION_X224 = 0x3 }
 
enum  FASTPATH_OUTPUT_ACTION_TYPE { FASTPATH_OUTPUT_ACTION_FASTPATH = 0x0 , FASTPATH_OUTPUT_ACTION_X224 = 0x3 }
 
enum  FASTPATH_UPDATETYPE {
  FASTPATH_UPDATETYPE_ORDERS = 0x0 , FASTPATH_UPDATETYPE_BITMAP = 0x1 , FASTPATH_UPDATETYPE_PALETTE = 0x2 , FASTPATH_UPDATETYPE_SYNCHRONIZE = 0x3 ,
  FASTPATH_UPDATETYPE_SURFCMDS = 0x4 , FASTPATH_UPDATETYPE_PTR_NULL = 0x5 , FASTPATH_UPDATETYPE_PTR_DEFAULT = 0x6 , FASTPATH_UPDATETYPE_PTR_POSITION = 0x8 ,
  FASTPATH_UPDATETYPE_COLOR = 0x9 , FASTPATH_UPDATETYPE_CACHED = 0xA , FASTPATH_UPDATETYPE_POINTER = 0xB , FASTPATH_UPDATETYPE_LARGE_POINTER = 0xC
}
 
enum  FASTPATH_FRAGMENT { FASTPATH_FRAGMENT_SINGLE = 0x0 , FASTPATH_FRAGMENT_LAST = 0x1 , FASTPATH_FRAGMENT_FIRST = 0x2 , FASTPATH_FRAGMENT_NEXT = 0x3 }
 
enum  FASTPATH_OUTPUT_COMPRESSION { FASTPATH_OUTPUT_COMPRESSION_USED = 0x2 }
 
enum  FASTPATH_INPUT_EVENT_CODE {
  FASTPATH_INPUT_EVENT_SCANCODE = 0x0 , FASTPATH_INPUT_EVENT_MOUSE = 0x1 , FASTPATH_INPUT_EVENT_MOUSEX = 0x2 , FASTPATH_INPUT_EVENT_SYNC = 0x3 ,
  FASTPATH_INPUT_EVENT_UNICODE = 0x4 , TS_FP_RELPOINTER_EVENT = 0x5 , TS_FP_QOETIMESTAMP_EVENT = 0x6
}
 
enum  FASTPATH_INPUT_KBDFLAGS { FASTPATH_INPUT_KBDFLAGS_RELEASE = 0x01 , FASTPATH_INPUT_KBDFLAGS_EXTENDED = 0x02 , FASTPATH_INPUT_KBDFLAGS_PREFIX_E1 = 0x04 }
 

Functions

FREERDP_LOCAL BOOL fastpath_read_header_rdp (rdpFastPath *fastpath, wStream *s, UINT16 *length)
 
FREERDP_LOCAL state_run_t fastpath_recv_updates (rdpFastPath *fastpath, wStream *s)
 
FREERDP_LOCAL state_run_t fastpath_recv_inputs (rdpFastPath *fastpath, wStream *s)
 
FREERDP_LOCAL BOOL fastpath_decrypt (rdpFastPath *fastpath, wStream *s, UINT16 *length)
 
FREERDP_LOCAL wStreamfastpath_input_pdu_init_header (rdpFastPath *fastpath)
 
FREERDP_LOCAL wStreamfastpath_input_pdu_init (rdpFastPath *fastpath, BYTE eventFlags, BYTE eventCode)
 
FREERDP_LOCAL BOOL fastpath_send_multiple_input_pdu (rdpFastPath *fastpath, wStream *s, size_t iEventCount)
 
FREERDP_LOCAL BOOL fastpath_send_input_pdu (rdpFastPath *fastpath, wStream *s)
 
FREERDP_LOCAL wStreamfastpath_update_pdu_init (rdpFastPath *fastpath)
 
FREERDP_LOCAL wStreamfastpath_update_pdu_init_new (rdpFastPath *fastpath)
 
FREERDP_LOCAL BOOL fastpath_send_update_pdu (rdpFastPath *fastpath, BYTE updateCode, wStream *s, BOOL skipCompression)
 
FREERDP_LOCAL BOOL fastpath_send_surfcmd_frame_marker (rdpFastPath *fastpath, UINT16 frameAction, UINT32 frameId)
 
FREERDP_LOCAL BYTE fastpath_get_encryption_flags (rdpFastPath *fastpath)
 
FREERDP_LOCAL rdpFastPath * fastpath_new (rdpRdp *rdp)
 
FREERDP_LOCAL void fastpath_free (rdpFastPath *fastpath)
 

Macro Definition Documentation

◆ FASTPATH_FRAGMENT_SAFE_SIZE

#define FASTPATH_FRAGMENT_SAFE_SIZE   0x3F80

◆ FASTPATH_MAX_PACKET_SIZE

#define FASTPATH_MAX_PACKET_SIZE   0x3FFF

FreeRDP: A Remote Desktop Protocol Implementation Fast Path

Copyright 2011 Vic Lee

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Enumeration Type Documentation

◆ FASTPATH_FRAGMENT

Enumerator
FASTPATH_FRAGMENT_SINGLE 
FASTPATH_FRAGMENT_LAST 
FASTPATH_FRAGMENT_FIRST 
FASTPATH_FRAGMENT_NEXT 

◆ FASTPATH_INPUT_ACTION_TYPE

Enumerator
FASTPATH_INPUT_ACTION_FASTPATH 
FASTPATH_INPUT_ACTION_X224 

◆ FASTPATH_INPUT_EVENT_CODE

Enumerator
FASTPATH_INPUT_EVENT_SCANCODE 
FASTPATH_INPUT_EVENT_MOUSE 
FASTPATH_INPUT_EVENT_MOUSEX 
FASTPATH_INPUT_EVENT_SYNC 
FASTPATH_INPUT_EVENT_UNICODE 
TS_FP_RELPOINTER_EVENT 
TS_FP_QOETIMESTAMP_EVENT 

◆ FASTPATH_INPUT_KBDFLAGS

Enumerator
FASTPATH_INPUT_KBDFLAGS_RELEASE 
FASTPATH_INPUT_KBDFLAGS_EXTENDED 
FASTPATH_INPUT_KBDFLAGS_PREFIX_E1 

◆ FASTPATH_OUTPUT_ACTION_TYPE

Enumerator
FASTPATH_OUTPUT_ACTION_FASTPATH 
FASTPATH_OUTPUT_ACTION_X224 

◆ FASTPATH_OUTPUT_COMPRESSION

Enumerator
FASTPATH_OUTPUT_COMPRESSION_USED 

◆ FASTPATH_UPDATETYPE

Enumerator
FASTPATH_UPDATETYPE_ORDERS 
FASTPATH_UPDATETYPE_BITMAP 
FASTPATH_UPDATETYPE_PALETTE 
FASTPATH_UPDATETYPE_SYNCHRONIZE 
FASTPATH_UPDATETYPE_SURFCMDS 
FASTPATH_UPDATETYPE_PTR_NULL 
FASTPATH_UPDATETYPE_PTR_DEFAULT 
FASTPATH_UPDATETYPE_PTR_POSITION 
FASTPATH_UPDATETYPE_COLOR 
FASTPATH_UPDATETYPE_CACHED 
FASTPATH_UPDATETYPE_POINTER 
FASTPATH_UPDATETYPE_LARGE_POINTER 

Function Documentation

◆ fastpath_decrypt()

FREERDP_LOCAL BOOL fastpath_decrypt ( rdpFastPath *  fastpath,
wStream s,
UINT16 length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_free()

FREERDP_LOCAL void fastpath_free ( rdpFastPath *  fastpath)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_get_encryption_flags()

FREERDP_LOCAL BYTE fastpath_get_encryption_flags ( rdpFastPath *  fastpath)
Here is the caller graph for this function:

◆ fastpath_input_pdu_init()

FREERDP_LOCAL wStream* fastpath_input_pdu_init ( rdpFastPath *  fastpath,
BYTE  eventFlags,
BYTE  eventCode 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_input_pdu_init_header()

FREERDP_LOCAL wStream* fastpath_input_pdu_init_header ( rdpFastPath *  fastpath)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_new()

FREERDP_LOCAL rdpFastPath* fastpath_new ( rdpRdp *  rdp)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_read_header_rdp()

FREERDP_LOCAL BOOL fastpath_read_header_rdp ( rdpFastPath *  fastpath,
wStream s,
UINT16 length 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_recv_inputs()

FREERDP_LOCAL state_run_t fastpath_recv_inputs ( rdpFastPath *  fastpath,
wStream s 
)

If numberEvents is not provided in fpInputHeader, it will be provided as one additional byte here.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_recv_updates()

FREERDP_LOCAL state_run_t fastpath_recv_updates ( rdpFastPath *  fastpath,
wStream s 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_send_input_pdu()

FREERDP_LOCAL BOOL fastpath_send_input_pdu ( rdpFastPath *  fastpath,
wStream s 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_send_multiple_input_pdu()

FREERDP_LOCAL BOOL fastpath_send_multiple_input_pdu ( rdpFastPath *  fastpath,
wStream s,
size_t  iEventCount 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_send_surfcmd_frame_marker()

FREERDP_LOCAL BOOL fastpath_send_surfcmd_frame_marker ( rdpFastPath *  fastpath,
UINT16  frameAction,
UINT32  frameId 
)

◆ fastpath_send_update_pdu()

FREERDP_LOCAL BOOL fastpath_send_update_pdu ( rdpFastPath *  fastpath,
BYTE  updateCode,
wStream s,
BOOL  skipCompression 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_update_pdu_init()

FREERDP_LOCAL wStream* fastpath_update_pdu_init ( rdpFastPath *  fastpath)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ fastpath_update_pdu_init_new()

FREERDP_LOCAL wStream* fastpath_update_pdu_init_new ( rdpFastPath *  fastpath)
Here is the call graph for this function:
Here is the caller graph for this function: