ReactOS 0.4.15-dev-7788-g1ad9096
rdesktop-core-tester.cpp File Reference
#include "stdafx.h"
#include <zmouse.h>
#include "rdesktop/rdesktop.h"
#include "rdesktop/proto.h"
Include dependency graph for rdesktop-core-tester.cpp:

Go to the source code of this file.

Classes

struct  CHANNEL_HANDLE_
 

Macros

#define NOT_SET   -1
 

Typedefs

typedef struct CHANNEL_HANDLE_ CHANNEL_HANDLE
 

Functions

void hexdump (unsigned char *p, unsigned int len)
 
void generate_random (uint8 *random)
 
void error (char *format,...)
 
void warning (char *format,...)
 
void unimpl (char *format,...)
 
BOOL rd_pstcache_mkdir (void)
 
int rd_open_file (char *filename)
 
void rd_close_file (int fd)
 
int rd_read_file (int fd, void *ptr, int len)
 
int rd_write_file (int fd, void *ptr, int len)
 
int rd_lseek_file (int fd, int offset)
 
BOOL rd_lock_file (int fd, int start, int len)
 
int load_licence (RDPCLIENT *This, unsigned char **data)
 
void save_licence (RDPCLIENT *This, unsigned char *data, int length)
 
static void mstsc_mousewheel (RDPCLIENT *This, int value, LPARAM lparam)
 
static LRESULT CALLBACK mstsc_WndProc (HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam)
 
static DWORD WINAPI mstsc_ProtocolIOThread (LPVOID lpArgument)
 
void channel_process (RDPCLIENT *This, STREAM s, uint16 mcs_channel)
 
static UINT VCAPITYPE VirtualChannelInit (LPVOID *ppInitHandle, PCHANNEL_DEF pChannel, INT channelCount, ULONG versionRequested, PCHANNEL_INIT_EVENT_FN pChannelInitEventProc)
 
UINT VCAPITYPE VirtualChannelOpen (LPVOID pInitHandle, LPDWORD pOpenHandle, PCHAR pChannelName, PCHANNEL_OPEN_EVENT_FN pChannelOpenEventProc)
 
UINT VCAPITYPE VirtualChannelClose (DWORD openHandle)
 
UINT VCAPITYPE VirtualChannelWrite (DWORD openHandle, LPVOID pData, ULONG dataLength, LPVOID pUserData)
 
int wmain ()
 

Variables

HWND hwnd
 
HBITMAP hbmBuffer
 
PVOID pBuffer
 
HDC hdcBuffer
 
UINT wmZMouseWheel
 
DWORD tlsIndex
 

Macro Definition Documentation

◆ NOT_SET

#define NOT_SET   -1

Typedef Documentation

◆ CHANNEL_HANDLE

Function Documentation

◆ channel_process()

void channel_process ( RDPCLIENT This,
STREAM  s,
uint16  mcs_channel 
)

Definition at line 413 of file rdesktop-core-tester.cpp.

414{
415}

◆ error()

void error ( char format,
  ... 
)

Definition at line 49 of file rdesktop-core-tester.cpp.

50 {
51 va_list ap;
52
53 fprintf(stderr, "ERROR: ");
54
57 va_end(ap);
58 }
char * va_list
Definition: acmsvcex.h:78
#define va_end(ap)
Definition: acmsvcex.h:90
#define va_start(ap, A)
Definition: acmsvcex.h:91
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
#define stderr
Definition: stdio.h:100
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
_Check_return_opt_ _CRTIMP int __cdecl vfprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format, va_list _ArgList)
void int int ULONGLONG int va_list * ap
Definition: winesup.h:36

◆ generate_random()

void generate_random ( uint8 random)

Definition at line 42 of file rdesktop-core-tester.cpp.

43 {
44 memcpy(random, "12345678901234567890123456789012", 32);
45 }
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define random
Definition: rosdhcp.h:81

◆ hexdump()

void hexdump ( unsigned char p,
unsigned int  len 
)

Definition at line 14 of file rdesktop-core-tester.cpp.

15 {
16 unsigned char *line = p;
17 int i, thisline;
18 unsigned int offset = 0;
19
20 while (offset < len)
21 {
22 printf("%04x ", offset);
23 thisline = len - offset;
24 if (thisline > 16)
25 thisline = 16;
26
27 for (i = 0; i < thisline; i++)
28 printf("%02x ", line[i]);
29
30 for (; i < 16; i++)
31 printf(" ");
32
33 for (i = 0; i < thisline; i++)
34 printf("%c", (line[i] >= 0x20 && line[i] < 0x7f) ? line[i] : '.');
35
36 printf("\n");
37 offset += thisline;
38 line += thisline;
39 }
40 }
#define printf
Definition: freeldr.h:93
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLsizei len
Definition: glext.h:6722
GLintptr offset
Definition: glext.h:5920
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
Definition: parser.c:49

◆ load_licence()

int load_licence ( RDPCLIENT This,
unsigned char **  data 
)

Definition at line 172 of file rdesktop-core-tester.cpp.

173 {
174 return -1;
175 }

◆ mstsc_mousewheel()

static void mstsc_mousewheel ( RDPCLIENT This,
int  value,
LPARAM  lparam 
)
static

Definition at line 196 of file rdesktop-core-tester.cpp.

197{
199
200 if(value < 0)
202 else
204
205 if(value < 0)
206 value = - value;
207
208 for(int click = 0; click < value; click += WHEEL_DELTA)
210}
@ lparam
Definition: SystemMenu.c:31
#define MOUSE_FLAG_BUTTON5
Definition: constants.h:259
#define MOUSE_FLAG_DOWN
Definition: constants.h:260
#define MOUSE_FLAG_BUTTON4
Definition: constants.h:258
@ RDP_INPUT_MOUSE
Definition: constants.h:235
void rdp_send_input(uint32 time, uint16 message_type, uint16 device_flags, uint16 param1, uint16 param2)
Definition: rdp.c:551
unsigned short uint16
Definition: types.h:30
DWORD WINAPI GetTickCount(VOID)
Definition: time.c:455
DWORD button
Definition: button.c:166
#define LOWORD(l)
Definition: pedump.c:82
#define WHEEL_DELTA
Definition: treelist.c:99
#define HIWORD(l)
Definition: typedefs.h:247
Definition: pdh_main.c:94

Referenced by mstsc_WndProc().

◆ mstsc_ProtocolIOThread()

static DWORD WINAPI mstsc_ProtocolIOThread ( LPVOID  lpArgument)
static

Definition at line 358 of file rdesktop-core-tester.cpp.

362{
363 RDPCLIENT * This = static_cast<RDPCLIENT *>(lpArgument);
364
368
370
371 rdp_connect(This, "10.0.0.3", flags, L"Administrator", L"", L"", L"", L"", hostname, "");
372 //rdp_connect(This, "192.168.7.232", flags, "", "", "", "");
373
375
376 BITMAPINFO bmi;
377 bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
378 bmi.bmiHeader.biWidth = This->width;
379 bmi.bmiHeader.biHeight = This->height;
380 bmi.bmiHeader.biPlanes = 1;
381 bmi.bmiHeader.biBitCount = This->server_depth;
383 bmi.bmiHeader.biSizeImage = 0;
386 bmi.bmiHeader.biClrUsed = 0; // TODO! palette displays
387 bmi.bmiHeader.biClrImportant = 0; // TODO! palette displays
388
390
392
393#if 0
394 rcClip.left = 0;
395 rcClip.top = 0;
396 rcClip.right = This->width + 1;
397 rcClip.bottom = This->height + 1;
398#endif
399
402
404 // TODO: handle redirection
405 // EVENT: OnDisconnect
406
407 SendMessage(hwnd, WM_CLOSE, 0, 0);
408
409 return 0;
410}
#define RDP_LOGON_NORMAL
Definition: precomp.h:24
RD_BOOL rdp_connect(char *server, uint32 flags, char *domain, char *password, char *command, char *directory, RD_BOOL reconnect)
Definition: rdp.c:1742
void rdp_main_loop(RD_BOOL *deactivated, uint32 *ext_disc_reason)
Definition: rdp.c:1682
unsigned int uint32
Definition: types.h:32
char * hostname
Definition: ftp.c:88
BOOL WINAPI GetComputerNameW(LPWSTR lpBuffer, LPDWORD lpnSize)
Definition: compname.c:446
#define NULL
Definition: types.h:112
#define ARRAYSIZE(array)
Definition: filtermapper.c:47
#define BI_RGB
Definition: precomp.h:47
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLbitfield flags
Definition: glext.h:7161
REFIID LPVOID DWORD_PTR dw
Definition: atlbase.h:40
#define RDP_LOGON_COMPRESSION
Definition: constants.h:263
#define RDP_LOGON_COMPRESSION2
Definition: constants.h:265
#define L(x)
Definition: ntvdm.h:50
HBITMAP hbmBuffer
PVOID pBuffer
HDC hdcBuffer
ULONG biClrImportant
Definition: precomp.h:43
USHORT biBitCount
Definition: precomp.h:37
LONG biYPelsPerMeter
Definition: precomp.h:41
ULONG biCompression
Definition: precomp.h:38
LONG biXPelsPerMeter
Definition: precomp.h:40
BITMAPINFOHEADER bmiHeader
Definition: wingdi.h:1476
int deactivated
Definition: svgawin.c:63
uint32 ext_disc_reason
Definition: svgawin.c:64
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
Definition: bitmap.c:245
#define MAX_COMPUTERNAME_LENGTH
Definition: winbase.h:243
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define DIB_RGB_COLORS
Definition: wingdi.h:367
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1539
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
#define WM_CLOSE
Definition: winuser.h:1621
#define SendMessage
Definition: winuser.h:5843
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by wmain().

◆ mstsc_WndProc()

static LRESULT CALLBACK mstsc_WndProc ( HWND  hwnd,
UINT  uMsg,
WPARAM  wparam,
LPARAM  lparam 
)
static

Definition at line 215 of file rdesktop-core-tester.cpp.

216{
217 // BUGBUG: LongToPtr & PtrToLong will break on Win64
218
220
221 switch(uMsg)
222 {
223 case WM_CLOSE:
225 break;
226
227 // FIXME: temporary
228 case WM_DESTROY:
230 break;
231
232 /* Initialization */
233 case WM_CREATE:
234 This = static_cast<RDPCLIENT *>(reinterpret_cast<LPCREATESTRUCT>(lparam)->lpCreateParams);
236 break;
237
238 /* Painting */
239 case WM_PRINTCLIENT:
240 if(wparam == 0)
241 break;
242
243 case WM_PAINT:
244 {
245 HDC hdc = (HDC)wparam;
246
247 // A DC was provided: print the whole client area into it
248 if(hdc)
249 {
250 RECT rc;
251 GetClientRect(hwnd, &rc);
252 BitBlt(hdc, 0, 0, rc.right, rc.bottom, hdcBuffer, 0, 0, SRCCOPY);
253 }
254 // Otherwise, we're refreshing to screen
255 else
256 {
257 PAINTSTRUCT ps;
258 hdc = BeginPaint(hwnd, &ps);
259
260 BitBlt
261 (
262 hdc,
263 ps.rcPaint.left,
264 ps.rcPaint.top,
265 ps.rcPaint.right - ps.rcPaint.left,
266 ps.rcPaint.bottom - ps.rcPaint.top,
267 hdcBuffer,
268 ps.rcPaint.left,
269 ps.rcPaint.top,
270 SRCCOPY
271 );
272
273 EndPaint(hwnd, &ps);
274 }
275 }
276
277 break;
278
279 /* Keyboard stuff */
280 case WM_SYSKEYDOWN:
281 case WM_KEYDOWN:
283 break;
284
285 case WM_SYSKEYUP:
286 case WM_KEYUP:
288 break;
289
290 /* Mouse stuff */
291 // Cursor shape
292 case WM_SETCURSOR:
293 if(LOWORD(lparam) == HTCLIENT)
294 {
295 //SetCursor(hcursor);
296 return TRUE;
297 }
298
299 break;
300
301 // Movement
302 case WM_MOUSEMOVE:
303 //if(This->sendmotion || wparam & (MK_LBUTTON | MK_RBUTTON | MK_MBUTTON | MK_XBUTTON1 | MK_XBUTTON2))
305
306 break;
307
308 // Buttons
309 // TODO: X buttons
310 case WM_LBUTTONDOWN:
312 break;
313
314 case WM_RBUTTONDOWN:
316 break;
317
318 case WM_MBUTTONDOWN:
320 break;
321
322 case WM_LBUTTONUP:
324 break;
325
326 case WM_RBUTTONUP:
328 break;
329
330 case WM_MBUTTONUP:
332 break;
333
334 // Wheel
335 case WM_MOUSEWHEEL:
337 break;
338
339 default:
340 /* Registered messages */
341 // Z-Mouse wheel support - you know, just in case
342 if(uMsg == wmZMouseWheel)
343 {
345 break;
346 }
347
348 /* Unhandled messages */
349 return DefWindowProc(hwnd, uMsg, wparam, lparam);
350 }
351
352 return 0;
353}
@ wparam
Definition: SystemMenu.c:30
#define RDP_KEYPRESS
Definition: constants.h:251
#define RDP_KEYRELEASE
Definition: constants.h:252
#define MOUSE_FLAG_BUTTON1
Definition: constants.h:255
#define MOUSE_FLAG_BUTTON2
Definition: constants.h:256
#define MOUSE_FLAG_BUTTON3
Definition: constants.h:257
@ RDP_INPUT_SCANCODE
Definition: constants.h:234
#define KBD_FLAG_EXT
Definition: constants.h:240
#define MOUSE_FLAG_MOVE
Definition: constants.h:254
#define PtrToLong(p)
Definition: basetsd.h:84
#define LongToPtr(l)
Definition: basetsd.h:91
#define TRUE
Definition: types.h:120
static VOID NTAPI BitBlt(_In_ ULONG Left, _In_ ULONG Top, _In_ ULONG Width, _In_ ULONG Height, _In_reads_bytes_(Delta *Height) PUCHAR Buffer, _In_ ULONG BitsPerPixel, _In_ ULONG Delta)
Definition: common.c:49
#define LOBYTE(W)
Definition: jmemdos.c:487
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:92
short SHORT
Definition: pedump.c:59
UINT wmZMouseWheel
static void mstsc_mousewheel(RDPCLIENT *This, int value, LPARAM lparam)
#define WM_PRINTCLIENT
Definition: richedit.h:70
#define DefWindowProc
Definition: ros2win.h:31
LONG right
Definition: windef.h:308
LONG bottom
Definition: windef.h:309
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
#define GWLP_USERDATA
Definition: treelist.c:63
#define WM_MOUSEWHEEL
Definition: treelist.c:96
#define SRCCOPY
Definition: wingdi.h:333
#define WM_PAINT
Definition: winuser.h:1620
#define WM_KEYUP
Definition: winuser.h:1716
#define WM_CREATE
Definition: winuser.h:1608
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
#define WM_RBUTTONUP
Definition: winuser.h:1780
#define WM_MOUSEMOVE
Definition: winuser.h:1775
#define WM_LBUTTONDOWN
Definition: winuser.h:1776
#define WM_RBUTTONDOWN
Definition: winuser.h:1779
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI EndPaint(_In_ HWND, _In_ const PAINTSTRUCT *)
#define HTCLIENT
Definition: winuser.h:2475
#define WM_SYSKEYUP
Definition: winuser.h:1720
#define WM_LBUTTONUP
Definition: winuser.h:1777
LONG WINAPI GetMessageTime(void)
Definition: message.c:1361
#define WM_SETCURSOR
Definition: winuser.h:1636
#define WM_DESTROY
Definition: winuser.h:1609
#define WM_KEYDOWN
Definition: winuser.h:1715
HDC WINAPI BeginPaint(_In_ HWND, _Out_ LPPAINTSTRUCT)
#define WM_MBUTTONUP
Definition: winuser.h:1783
BOOL WINAPI DestroyWindow(_In_ HWND)
#define WM_SYSKEYDOWN
Definition: winuser.h:1719
#define WM_MBUTTONDOWN
Definition: winuser.h:1782

Referenced by wmain().

◆ rd_close_file()

void rd_close_file ( int  fd)

Definition at line 137 of file rdesktop-core-tester.cpp.

138 {
139 _close(fd);
140 }
_Check_return_opt_ _CRTIMP int __cdecl _close(_In_ int _FileHandle)
static int fd
Definition: io.c:51

◆ rd_lock_file()

BOOL rd_lock_file ( int  fd,
int  start,
int  len 
)

Definition at line 165 of file rdesktop-core-tester.cpp.

166 {
167 // TODOOO...
168 return False;
169 }
#define False
Definition: types.h:25

◆ rd_lseek_file()

int rd_lseek_file ( int  fd,
int  offset 
)

Definition at line 158 of file rdesktop-core-tester.cpp.

159 {
160 return _lseek(fd, offset, SEEK_SET);
161 }
#define SEEK_SET
Definition: jmemansi.c:26
_Check_return_opt_ _CRTIMP long __cdecl _lseek(_In_ int _FileHandle, _In_ long _Offset, _In_ int _Origin)

◆ rd_open_file()

int rd_open_file ( char filename)

Definition at line 119 of file rdesktop-core-tester.cpp.

120 {
121 char *home;
122 char fn[256];
123 int fd;
124
125 home = getenv("HOME");
126 if (home == NULL)
127 return -1;
128 sprintf(fn, "%s/.rdesktop/%s", home, filename);
129 fd = _open(fn, _O_RDWR | _O_CREAT, 0);
130 if (fd == -1)
131 perror(fn);
132 return fd;
133 }
#define _O_RDWR
Definition: cabinet.h:39
#define _O_CREAT
Definition: cabinet.h:46
_CRTIMP void __cdecl perror(_In_opt_z_ const char *_ErrMsg)
_Check_return_ char *__cdecl getenv(_In_z_ const char *_VarName)
const char * filename
Definition: ioapi.h:137
#define sprintf(buf, format,...)
Definition: sprintf.c:55
_CRTIMP int __cdecl _open(const char *_Filename, int _OpenFlag,...)
Definition: file.c:2001
Definition: tftpd.h:38
static GLenum _GLUfuncptr fn
Definition: wgl_font.c:159

◆ rd_pstcache_mkdir()

BOOL rd_pstcache_mkdir ( void  )

Definition at line 88 of file rdesktop-core-tester.cpp.

89 {
90 char *home;
91 char bmpcache_dir[256];
92
93 home = getenv("HOME");
94
95 if (home == NULL)
96 return False;
97
98 sprintf(bmpcache_dir, "%s/%s", home, ".rdesktop");
99
100 if ((_mkdir(bmpcache_dir) == -1) && errno != EEXIST)
101 {
102 perror(bmpcache_dir);
103 return False;
104 }
105
106 sprintf(bmpcache_dir, "%s/%s", home, ".rdesktop/cache");
107
108 if ((_mkdir(bmpcache_dir) == -1) && errno != EEXIST)
109 {
110 perror(bmpcache_dir);
111 return False;
112 }
113
114 return True;
115 }
#define EEXIST
Definition: acclib.h:88
#define True
Definition: types.h:24
_Check_return_ _CRTIMP int __cdecl _mkdir(_In_z_ const char *_Path)
#define errno
Definition: errno.h:18

◆ rd_read_file()

int rd_read_file ( int  fd,
void ptr,
int  len 
)

Definition at line 144 of file rdesktop-core-tester.cpp.

145 {
146 return _read(fd, ptr, len);
147 }
static PVOID ptr
Definition: dispmode.c:27
_Check_return_ _CRTIMP int __cdecl _read(_In_ int _FileHandle, _Out_writes_bytes_(_MaxCharCount) void *_DstBuf, _In_ unsigned int _MaxCharCount)

◆ rd_write_file()

int rd_write_file ( int  fd,
void ptr,
int  len 
)

Definition at line 151 of file rdesktop-core-tester.cpp.

152 {
153 return _write(fd, ptr, len);
154 }
_CRTIMP int __cdecl _write(_In_ int _FileHandle, _In_reads_bytes_(_MaxCharCount) const void *_Buf, _In_ unsigned int _MaxCharCount)

◆ save_licence()

void save_licence ( RDPCLIENT This,
unsigned char data,
int  length 
)

Definition at line 178 of file rdesktop-core-tester.cpp.

179 {
180 }

◆ unimpl()

void unimpl ( char format,
  ... 
)

Definition at line 75 of file rdesktop-core-tester.cpp.

76 {
77 va_list ap;
78
79 fprintf(stderr, "NOT IMPLEMENTED: ");
80
83 va_end(ap);
84 }

◆ VirtualChannelClose()

UINT VCAPITYPE VirtualChannelClose ( DWORD  openHandle)

Definition at line 531 of file rdesktop-core-tester.cpp.

535{
536 // TODO: channel handle management
537 return CHANNEL_RC_BAD_CHANNEL_HANDLE;
538}

◆ VirtualChannelInit()

static UINT VCAPITYPE VirtualChannelInit ( LPVOID ppInitHandle,
PCHANNEL_DEF  pChannel,
INT  channelCount,
ULONG  versionRequested,
PCHANNEL_INIT_EVENT_FN  pChannelInitEventProc 
)
static

Definition at line 429 of file rdesktop-core-tester.cpp.

437{
438 if(channelCount <= 0)
439 return CHANNEL_RC_BAD_CHANNEL;
440
441 if(ppInitHandle == NULL)
442 return CHANNEL_RC_BAD_INIT_HANDLE;
443
444 if(pChannel == NULL)
445 return CHANNEL_RC_BAD_CHANNEL;
446
447 if(pChannelInitEventProc == NULL)
448 return CHANNEL_RC_BAD_PROC;
449
451
452 if(This == NULL)
453 return CHANNEL_RC_NOT_IN_VIRTUALCHANNELENTRY;
454
455 if(This->num_channels + channelCount > CHANNEL_MAX_COUNT)
456 return CHANNEL_RC_TOO_MANY_CHANNELS;
457
458 for(INT i = 0; i < channelCount; ++ i)
459 {
460 if(strlen(pChannel[i].name) > CHANNEL_NAME_LEN)
461 return CHANNEL_RC_BAD_CHANNEL;
462 }
463
464 memcpy(This->channel_defs + This->num_channels, pChannel, sizeof(*pChannel) * channelCount);
465
466#if 0 // TODO
467 for(INT i = 0; i < channelCount; ++ i)
468 {
469 pChannel[i].options |= CHANNEL_OPTION_INITIALIZED;
470
471 int j = This->num_channels + i;
472 This->channel_data[j].opened = 0;
473 This->channel_data[j].pChannelInitEventProc = pChannelInitEventProc;
474 This->channel_data[j].pChannelOpenEventProc = NULL;
475 }
476#endif
477
478 This->num_channels += channelCount;
479
480 *ppInitHandle = This;
481
482 return CHANNEL_RC_OK;
483}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define CHANNEL_OPTION_INITIALIZED
Definition: constants.h:431
LPVOID WINAPI TlsGetValue(IN DWORD Index)
Definition: thread.c:1240
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
DWORD tlsIndex
Definition: name.c:39
int32_t INT
Definition: typedefs.h:58

◆ VirtualChannelOpen()

UINT VCAPITYPE VirtualChannelOpen ( LPVOID  pInitHandle,
LPDWORD  pOpenHandle,
PCHAR  pChannelName,
PCHANNEL_OPEN_EVENT_FN  pChannelOpenEventProc 
)

Definition at line 487 of file rdesktop-core-tester.cpp.

494{
495 if(pInitHandle == NULL)
496 return CHANNEL_RC_BAD_INIT_HANDLE;
497
498 if(pOpenHandle == NULL)
499 return CHANNEL_RC_BAD_CHANNEL_HANDLE;
500
501 if(pChannelName == NULL)
502 return CHANNEL_RC_UNKNOWN_CHANNEL_NAME;
503
504 if(pChannelOpenEventProc == NULL)
505 return CHANNEL_RC_BAD_PROC;
506
507 RDPCLIENT * This = (RDPCLIENT *)pInitHandle;
508
509#if 0 // TODO
510 for(unsigned i = 0; i < This->num_channels; ++ i)
511 {
512 if(strcmp(pChannelName, This->channel_defs[i].name) == 0)
513 {
514 if(This->channel_data[i].opened)
515 return CHANNEL_RC_ALREADY_OPEN;
516
517 This->channel_data[i].opened = 1;
518 This->channel_data[i].pChannelOpenEventProc = pChannelOpenEventProc;
519
520 // TODO: allocate a handle here
521 *pOpenHandle = 0;
522
523 break;
524 }
525 }
526#endif
527
528 return CHANNEL_RC_OK;
529}
int strcmp(const char *String1, const char *String2)
Definition: utclib.c:469

◆ VirtualChannelWrite()

UINT VCAPITYPE VirtualChannelWrite ( DWORD  openHandle,
LPVOID  pData,
ULONG  dataLength,
LPVOID  pUserData 
)

Definition at line 540 of file rdesktop-core-tester.cpp.

547{
548 // TODO
549 return CHANNEL_RC_BAD_CHANNEL_HANDLE;
550}

◆ warning()

void warning ( char format,
  ... 
)

Definition at line 62 of file rdesktop-core-tester.cpp.

63 {
64 va_list ap;
65
66 fprintf(stderr, "WARNING: ");
67
70 va_end(ap);
71 }

◆ wmain()

int wmain ( )

Definition at line 552 of file rdesktop-core-tester.cpp.

553{
554 WSADATA wsd;
555 WSAStartup(MAKEWORD(2, 2), &wsd);
556
557 static RDPCLIENT This_; // NOTE: this is HUGE and would overflow the stack!
558 ZeroMemory(&This_, sizeof(This_));
559
560 RDPCLIENT * This = &This_;
561
562 /*
563 Threading model for MissTosca:
564 - main thread is the GUI thread. Message loop maintained by caller
565 - protocol I/O is handled in an I/O thread (or thread pool)
566 - extra threads maintained by virtual channel handlers. Virtual channel writes are thread-neutral
567
568 How we handle drawing: at the moment just an off-screen buffer we dump on-screen when asked to.
569 Still considering how to draw on-screen directly and *then* buffering off-screen (for example,
570 when running inside another remote session)
571 */
572
573 // FIXME: keyboard mess
574 This->keylayout = 0x409;
575 This->keyboard_type = 0x4;
576 This->keyboard_subtype = 0x0;
577 This->keyboard_functionkeys = 0xc;
578 This->width = 800;
579 This->height = 600;
580 This->server_depth = 24;
581 This->bitmap_compression = True;
582 //This->sendmotion = True;
583 This->bitmap_cache = True;
584 This->bitmap_cache_persist_enable = False;
585 This->bitmap_cache_precache = True;
586 This->encryption = True;
587 This->packet_encryption = True;
588 This->desktop_save = True;
589 This->polygon_ellipse_orders = False; // = True;
590 //This->fullscreen = False;
591 //This->grab_keyboard = True;
592 //This->hide_decorations = False;
593 This->use_rdp5 = True;
594 //This->rdpclip = True;
595 This->console_session = False;
596 //This->numlock_sync = False;
597 //This->seamless_rdp = False;
599 This->tcp_port_rdp = TCP_PORT_RDP;
600
601#define NOT_SET -1
602 This->cache.bmpcache_lru[0] = NOT_SET;
603 This->cache.bmpcache_lru[1] = NOT_SET;
604 This->cache.bmpcache_lru[2] = NOT_SET;
605 This->cache.bmpcache_mru[0] = NOT_SET;
606 This->cache.bmpcache_mru[1] = NOT_SET;
607 This->cache.bmpcache_mru[2] = NOT_SET;
608
609 This->rdp.current_status = 1;
610
611 //hcursor = NULL;
612
613 WNDCLASS wc;
614 ZeroMemory(&wc, sizeof(wc));
615
617 wc.hbrBackground = static_cast<HBRUSH>(GetStockObject(HOLLOW_BRUSH));
618 wc.lpszClassName = TEXT("MissTosca_Desktop");
619
620 wmZMouseWheel = RegisterWindowMessage(MSH_MOUSEWHEEL);
621
622 ATOM a = RegisterClass(&wc);
623
625 (
626 MAKEINTATOM(a),
627 NULL,
631 This->width,
632 This->height,
633 NULL,
634 NULL,
635 NULL,
636 This
637 );
638
639 // The righ time to start the protocol thread
642
643 // Your standard, garden variety message loop
644 MSG msg;
645
646 while(GetMessage(&msg, NULL, 0, 0))
647 {
650 }
651}
#define msg(x)
Definition: auth_time.c:54
#define TCP_PORT_RDP
Definition: constants.h:21
static WSADATA wsd
Definition: adapter.c:10
WORD ATOM
Definition: dimm.idl:113
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:137
INT WINAPI WSAStartup(IN WORD wVersionRequested, OUT LPWSADATA lpWSAData)
Definition: startup.c:113
DWORD dwThreadId
Definition: fdebug.c:31
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
#define TEXT(s)
Definition: k32.h:26
#define RDP5_NO_MENUANIMATIONS
Definition: constants.h:271
#define RDP5_NO_FULLWINDOWDRAG
Definition: constants.h:270
#define RDP5_NO_WALLPAPER
Definition: constants.h:269
HANDLE hThread
Definition: wizard.c:28
#define WS_POPUP
Definition: pedump.c:616
#define WS_VISIBLE
Definition: pedump.c:620
static LRESULT CALLBACK mstsc_WndProc(HWND hwnd, UINT uMsg, WPARAM wparam, LPARAM lparam)
#define NOT_SET
static DWORD WINAPI mstsc_ProtocolIOThread(LPVOID lpArgument)
HBRUSH hbrBackground
Definition: winuser.h:3170
LPCSTR lpszClassName
Definition: winuser.h:3172
WNDPROC lpfnWndProc
Definition: winuser.h:3164
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
#define MAKEWORD(a, b)
Definition: typedefs.h:248
#define ZeroMemory
Definition: winbase.h:1712
#define MAKEINTATOM(i)
Definition: winbase.h:1463
HGDIOBJ WINAPI GetStockObject(_In_ int)
#define HOLLOW_BRUSH
Definition: wingdi.h:899
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define CreateWindow
Definition: winuser.h:5754
#define GetMessage
Definition: winuser.h:5790
#define RegisterWindowMessage
Definition: winuser.h:5840
#define CW_USEDEFAULT
Definition: winuser.h:225
#define RegisterClass
Definition: winuser.h:5836
#define DispatchMessage
Definition: winuser.h:5765

Referenced by iskeyword(), and main().

Variable Documentation

◆ hbmBuffer

HBITMAP hbmBuffer

Definition at line 187 of file rdesktop-core-tester.cpp.

Referenced by mstsc_ProtocolIOThread().

◆ hdcBuffer

HDC hdcBuffer

◆ hwnd

Definition at line 186 of file rdesktop-core-tester.cpp.

◆ pBuffer

PVOID pBuffer

Definition at line 188 of file rdesktop-core-tester.cpp.

Referenced by FxMemoryBuffer::_Create(), FxMemoryBufferFromPool::_Create(), FxPkgPdo::_PnpQueryDeviceText(), FxPkgPdo::_PnpQueryId(), FxWmiIrpHandler::_RegInfo(), _Success_(), AboutProtocolInfo_QueryInfo(), AlignRpcPtr(), FxNPagedLookasideList::Allocate(), FxNPagedLookasideListFromPool::Allocate(), FxPagedLookasideListFromPool::Allocate(), AppendToBuffer(), ApplyRegistryValues(), FxRequestBuffer::AssignValues(), ASYNC_STGMEDIUM_UserMarshal(), ASYNC_STGMEDIUM_UserUnmarshal(), AVISplitter_InputPin_PreConnect(), BackgroundCopyJob_GetReplyData(), CcMapData(), CLIPFORMAT_UserMarshal(), CLIPFORMAT_UserUnmarshal(), cmdHelpMsg(), CMediaSample_Constructor(), ConsolePager(), FxDevice::CreateSymbolicLink(), DECLARE_INTERFACE_(), DisplayShare(), DriverFilesCallback(), EngDxIoctl(), EnumDepend(), EnumerateGroups(), EnumerateLocalGroups(), EnumerateShares(), EnumerateUsers(), EnumPrinterDataExA(), EnumSessions(), ExtractIP(), ExtractName(), ExtractZipImage(), FileAsyncReader_Request(), FileAsyncReader_SyncRead(), FileAsyncReader_SyncReadAligned(), FileGetString(), FindMimeFromData(), FLAG_STGMEDIUM_UserMarshal(), FLAG_STGMEDIUM_UserUnmarshal(), FormatBufferFat(), FxIoTarget::FormatIoctlRequest(), FxIoTarget::FormatIoRequest(), FreeCircularBuffer(), GetClassFileOrMime(), FxRequest::GetDeviceControlOutputMdl(), GetDisplayName(), GetFilePatchSignatureByHandle(), GetInterfaceType(), GetInterruptType(), GetKeyName(), FxRequest::GetMdl(), GetMemoryAccess(), GetNumberOfElementsInCircularBuffer(), GetPortType(), GetResourceType(), GetShareDisposition(), GetStringValue(), CTooltips::GetText(), handle_UserMarshal(), handle_UserUnmarshal(), HENHMETAFILE_UserMarshal(), HENHMETAFILE_UserUnmarshal(), HGLOBAL_UserMarshal(), HGLOBAL_UserUnmarshal(), HMETAFILE_UserMarshal(), HMETAFILE_UserUnmarshal(), HMETAFILEPICT_UserMarshal(), HMETAFILEPICT_UserUnmarshal(), HPALETTE_UserMarshal(), HPALETTE_UserUnmarshal(), HtmlLoadOptions_QueryOption(), HtmlLoadOptions_SetOption(), HttpInfo_QueryInfo(), HttpInfo_QueryOption(), if(), IncreaseCircularBufferSize(), InitializeCircularBuffer(), InitLog(), InitUserGroupsList(), InternetSession_SetSessionOption(), InternetTransport_WndProc(), IntGdiGetFontResourceInfo(), IsCircularBufferEmpty(), ITSProtocolInfo_QueryInfo(), IWinInetHttpInfo_QueryInfo_Proxy(), IWinInetHttpInfo_QueryInfo_Stub(), IWinInetInfo_QueryOption_Proxy(), IWinInetInfo_QueryOption_Stub(), JSProtocolInfo_QueryInfo(), kerberos_QueryContextAttributesA(), kerberos_QueryContextAttributesW(), kerberos_QueryCredentialsAttributesA(), kerberos_QueryCredentialsAttributesW(), CJournaledTestList::LoadJournalFile(), LoadSMBiosData(), LoadStringRC(), LoadStringRCEx(), LocalmonReadPort(), LocalmonWritePort(), MediaDet_GetBitmapBits(), MimeHtmlProtocolInfo_QueryInfo(), mstsc_ProtocolIOThread(), nego_QueryContextAttributesA(), nego_QueryContextAttributesW(), nego_QueryCredentialsAttributesA(), nego_QueryCredentialsAttributesW(), NewEnumFontFamiliesExW(), ntlm_QueryContextAttributesA(), ntlm_QueryContextAttributesW(), ntlm_QueryCredentialsAttributesA(), ntlm_QueryCredentialsAttributesW(), OLECONVERT_GetOLE20FromOLE10(), ParaNdis_BindBufferToPacket(), ParaNdis_IndicateReceivedPacket(), ParaNdis_PacketCopier(), ParaNdis_PacketMapper(), ParaNdis_UnbindBufferFromPacket(), PartitionDescription(), PeFmtCreateSection(), PEN_GetObject(), PerfDataRefresh(), pointer_default(), POP3Transport_CallbackProcessDELEResp(), POP3Transport_CallbackProcessLISTResp(), POP3Transport_CallbackProcessNOOPResp(), POP3Transport_CallbackProcessPASSResp(), POP3Transport_CallbackProcessQUITResponse(), POP3Transport_CallbackProcessRETRResp(), POP3Transport_CallbackProcessRSETResp(), POP3Transport_CallbackProcessSTATResp(), POP3Transport_CallbackProcessTOPResp(), POP3Transport_CallbackProcessUIDLResp(), POP3Transport_CallbackProcessUSERResp(), PopCircularBufferEntry(), PrintAllJobs(), PrintByteDataLine(), PrintD2(), PrintDebug(), PrintErrorMessage(), PrintJobDetails(), PrintMessageString(), PrintMessageStringV(), PrintNetMessage(), PrintPaddedMessageString(), PrintRawJob(), PrintWordDataLine(), PROFILE_Load(), PushCircularBufferEntry(), QueryContextAttributesA(), QueryContextAttributesW(), QueryCredentialsAttributesA(), QueryCredentialsAttributesW(), RasSecurityDialogGetInfo(), RasSecurityDialogReceive(), RasSecurityDialogSend(), CKsAllocator::ReleaseBuffer(), ResProtocolInfo_QueryInfo(), SaveCustomPath(), ScmDecryptPassword(), ScmEncryptPassword(), SetContextAttributesA(), SetContextAttributesW(), SetupDiGetDriverInfoDetailW(), SetupGetInfFileListW(), SetWelcomeText(), SMTPTransport_CallbackDisconnect(), SMTPTransport_CallbackMessageProcessResponse(), SMTPTransport_CallbackMessageSendDataStream(), SMTPTransport_CallbackMessageSendTo(), SMTPTransport_CallbackProcessDATAResponse(), SMTPTransport_CallbackProcessHelloResp(), SMTPTransport_CallbackProcessMAILResponse(), SMTPTransport_CallbackProcessRCPTResponse(), SMTPTransport_CallbackSendHello(), SNB_UserMarshal(), SNB_UserUnmarshal(), STGMEDIUM_UserMarshal(), STGMEDIUM_UserUnmarshal(), SystemFunction036(), test_pack_userBITMAP(), Test_RtlUnicodeStringPrintf(), Test_RtlUnicodeStringPrintfEx(), thunk_ContextAttributesAToW(), thunk_ContextAttributesWToA(), thunk_QueryContextAttributesA(), thunk_QueryContextAttributesW(), thunk_QueryCredentialsAttributesA(), thunk_QueryCredentialsAttributesW(), thunk_SetContextAttributesA(), thunk_SetContextAttributesW(), UpdateGroupsList(), UpdateUsersList(), UrlMkGetSessionOption(), UrlMkSetSessionOption(), UXTHEME_RegionFromDibBits(), VfdMakeFileDesc(), VideoPortDDCMonitorHelper(), WdtpInterfacePointer_UserMarshal(), WdtpInterfacePointer_UserUnmarshal(), WinInetHttpInfo_QueryInfo(), WinInetHttpInfo_QueryOption(), WTSSetUserConfigA(), and WTSSetUserConfigW().

◆ tlsIndex

DWORD tlsIndex

Definition at line 417 of file rdesktop-core-tester.cpp.

Referenced by VirtualChannelInit().

◆ wmZMouseWheel

UINT wmZMouseWheel

Definition at line 190 of file rdesktop-core-tester.cpp.

Referenced by mstsc_WndProc(), and wmain().