FreeRDP
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Modules Pages
channels/rdpemsc.h
1
20#ifndef FREERDP_CHANNEL_RDPEMSC_H
21#define FREERDP_CHANNEL_RDPEMSC_H
22
32#include <freerdp/api.h>
33#include <freerdp/dvc.h>
34#include <freerdp/types.h>
35
40#define RDPEMSC_CHANNEL_NAME "mousecursor"
41#define RDPEMSC_DVC_CHANNEL_NAME "Microsoft::Windows::RDS::MouseCursor"
42
43#ifdef __cplusplus
44extern "C"
45{
46#endif
47
48 typedef enum
49 {
50 PDUTYPE_EMSC_RESERVED = 0x00,
51 PDUTYPE_CS_CAPS_ADVERTISE = 0x01,
52 PDUTYPE_SC_CAPS_CONFIRM = 0x02,
53 PDUTYPE_SC_MOUSEPTR_UPDATE = 0x03,
54 } RDP_MOUSE_CURSOR_PDUTYPE;
55
56 typedef enum
57 {
58 TS_UPDATETYPE_MOUSEPTR_SYSTEM_NULL = 0x05,
59 TS_UPDATETYPE_MOUSEPTR_SYSTEM_DEFAULT = 0x06,
60 TS_UPDATETYPE_MOUSEPTR_POSITION = 0x08,
61 TS_UPDATETYPE_MOUSEPTR_CACHED = 0x0A,
62 TS_UPDATETYPE_MOUSEPTR_POINTER = 0x0B,
63 TS_UPDATETYPE_MOUSEPTR_LARGE_POINTER = 0x0C,
64 } TS_UPDATETYPE_MOUSEPTR;
65
66#define RDPEMSC_HEADER_SIZE 4
67
68 typedef struct
69 {
70 RDP_MOUSE_CURSOR_PDUTYPE pduType;
71 TS_UPDATETYPE_MOUSEPTR updateType;
72 UINT16 reserved;
74
75 typedef enum
76 {
77 RDP_MOUSE_CURSOR_CAPVERSION_INVALID = 0x00000000,
80
81 typedef struct
82 {
83 UINT32 signature;
85 UINT32 size;
87
88 typedef struct
89 {
90 RDP_MOUSE_CURSOR_CAPSET capsetHeader;
92
93 typedef struct
94 {
96 wArrayList* capsSets;
98
99 typedef struct
100 {
104
105 typedef struct
106 {
107 UINT16 xPos;
108 UINT16 yPos;
109 } TS_POINT16;
110
111 typedef struct
112 {
113 UINT16 xorBpp;
114 UINT16 cacheIndex;
115 TS_POINT16 hotSpot;
116 UINT16 width;
117 UINT16 height;
118 UINT16 lengthAndMask;
119 UINT16 lengthXorMask;
120 BYTE* xorMaskData;
121 BYTE* andMaskData;
122 BYTE pad;
124
125 typedef struct
126 {
127 UINT16 xorBpp;
128 UINT16 cacheIndex;
129 TS_POINT16 hotSpot;
130 UINT16 width;
131 UINT16 height;
132 UINT32 lengthAndMask;
133 UINT32 lengthXorMask;
134 BYTE* xorMaskData;
135 BYTE* andMaskData;
136 BYTE pad;
138
139 typedef struct
140 {
142 TS_POINT16* position;
143 UINT16* cachedPointerIndex;
144 TS_POINTERATTRIBUTE* pointerAttribute;
145 TS_LARGEPOINTERATTRIBUTE* largePointerAttribute;
147
148#ifdef __cplusplus
149}
150#endif
151
154#endif /* FREERDP_CHANNEL_RDPEMSC_H */
RDP_MOUSE_CURSOR_CAPVERSION
@ RDP_MOUSE_CURSOR_CAPVERSION_1