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
 
struct  rdpFastPath
 

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_INPUT_ENCRYPTION_FLAGS { FASTPATH_INPUT_SECURE_CHECKSUM = 0x1, FASTPATH_INPUT_ENCRYPTED = 0x2 }
 
enum  FASTPATH_OUTPUT_ENCRYPTION_FLAGS { FASTPATH_OUTPUT_SECURE_CHECKSUM = 0x1, FASTPATH_OUTPUT_ENCRYPTED = 0x2 }
 
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
}
 
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
}
 
enum  FASTPATH_INPUT_KBDFLAGS { FASTPATH_INPUT_KBDFLAGS_RELEASE = 0x01, FASTPATH_INPUT_KBDFLAGS_EXTENDED = 0x02, FASTPATH_INPUT_KBDFLAGS_PREFIX_E1 = 0x04 }
 

Functions

FREERDP_LOCAL UINT16 fastpath_header_length (wStream *s)
 
FREERDP_LOCAL UINT16 fastpath_read_header (rdpFastPath *fastpath, wStream *s)
 
FREERDP_LOCAL BOOL fastpath_read_header_rdp (rdpFastPath *fastpath, wStream *s, UINT16 *length)
 
FREERDP_LOCAL int fastpath_recv_updates (rdpFastPath *fastpath, wStream *s)
 
FREERDP_LOCAL int fastpath_recv_inputs (rdpFastPath *fastpath, wStream *s)
 
FREERDP_LOCAL wStream * fastpath_input_pdu_init_header (rdpFastPath *fastpath)
 
FREERDP_LOCAL wStream * fastpath_input_pdu_init (rdpFastPath *fastpath, BYTE eventFlags, BYTE eventCode)
 
FREERDP_LOCAL BOOL fastpath_send_multiple_input_pdu (rdpFastPath *fastpath, wStream *s, int iEventCount)
 
FREERDP_LOCAL BOOL fastpath_send_input_pdu (rdpFastPath *fastpath, wStream *s)
 
FREERDP_LOCAL wStream * fastpath_update_pdu_init (rdpFastPath *fastpath)
 
FREERDP_LOCAL wStream * fastpath_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 rdpFastPath * fastpath_new (rdpRdp *rdp)
 
FREERDP_LOCAL void fastpath_free (rdpFastPath *fastpath)
 

Macro Definition Documentation

#define FASTPATH_FRAGMENT_SAFE_SIZE   0x3F80
#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

Enumerator
FASTPATH_FRAGMENT_SINGLE 
FASTPATH_FRAGMENT_LAST 
FASTPATH_FRAGMENT_FIRST 
FASTPATH_FRAGMENT_NEXT 
Enumerator
FASTPATH_INPUT_ACTION_FASTPATH 
FASTPATH_INPUT_ACTION_X224 
Enumerator
FASTPATH_INPUT_SECURE_CHECKSUM 
FASTPATH_INPUT_ENCRYPTED 
Enumerator
FASTPATH_INPUT_EVENT_SCANCODE 
FASTPATH_INPUT_EVENT_MOUSE 
FASTPATH_INPUT_EVENT_MOUSEX 
FASTPATH_INPUT_EVENT_SYNC 
FASTPATH_INPUT_EVENT_UNICODE 
Enumerator
FASTPATH_INPUT_KBDFLAGS_RELEASE 
FASTPATH_INPUT_KBDFLAGS_EXTENDED 
FASTPATH_INPUT_KBDFLAGS_PREFIX_E1 
Enumerator
FASTPATH_OUTPUT_ACTION_FASTPATH 
FASTPATH_OUTPUT_ACTION_X224 
Enumerator
FASTPATH_OUTPUT_COMPRESSION_USED 
Enumerator
FASTPATH_OUTPUT_SECURE_CHECKSUM 
FASTPATH_OUTPUT_ENCRYPTED 
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 

Function Documentation

FREERDP_LOCAL void fastpath_free ( rdpFastPath *  fastpath)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL UINT16 fastpath_header_length ( wStream *  s)

Here is the call graph for this function:

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:

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:

FREERDP_LOCAL rdpFastPath* fastpath_new ( rdpRdp *  rdp)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL UINT16 fastpath_read_header ( rdpFastPath *  fastpath,
wStream *  s 
)

Read a Fast-Path packet header.

Parameters
sstream
encryptionFlags
Returns
length

Here is the call graph for this function:

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:

FREERDP_LOCAL int 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:

FREERDP_LOCAL int fastpath_recv_updates ( rdpFastPath *  fastpath,
wStream *  s 
)

Here is the call graph for this function:

Here is the caller graph for this function:

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:

FREERDP_LOCAL BOOL fastpath_send_multiple_input_pdu ( rdpFastPath *  fastpath,
wStream *  s,
int  iEventCount 
)

Here is the call graph for this function:

Here is the caller graph for this function:

FREERDP_LOCAL BOOL fastpath_send_surfcmd_frame_marker ( rdpFastPath *  fastpath,
UINT16  frameAction,
UINT32  frameId 
)
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:

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:

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: