--- sourceforge.net/trunk/rdesktop/types.h 2002/07/18 18:28:12 66 +++ sourceforge.net/trunk/rdesktop/types.h 2005/08/02 15:07:35 949 @@ -1,13 +1,13 @@ /* rdesktop: A Remote Desktop Protocol client. Common data types - Copyright (C) Matthew Chapman 1999-2000 + Copyright (C) Matthew Chapman 1999-2005 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -26,14 +26,23 @@ #endif typedef unsigned char uint8; +typedef signed char sint8; typedef unsigned short uint16; +typedef signed short sint16; typedef unsigned int uint32; +typedef signed int sint32; typedef void *HBITMAP; typedef void *HGLYPH; typedef void *HCOLOURMAP; typedef void *HCURSOR; +typedef struct _POINT +{ + sint16 x, y; +} +POINT; + typedef struct _COLOURENTRY { uint8 red; @@ -53,10 +62,10 @@ typedef struct _BOUNDS { - uint16 left; - uint16 top; - uint16 right; - uint16 bottom; + sint16 left; + sint16 top; + sint16 right; + sint16 bottom; } BOUNDS; @@ -65,7 +74,7 @@ { uint8 style; uint8 width; - uint8 colour; + uint32 colour; } PEN; @@ -82,8 +91,8 @@ typedef struct _FONTGLYPH { - uint16 offset; - uint16 baseline; + sint16 offset; + sint16 baseline; uint16 width; uint16 height; HBITMAP pixmap; @@ -101,7 +110,153 @@ typedef struct _key_translation { + /* For normal scancode translations */ uint8 scancode; uint16 modifiers; + /* For sequences. If keysym is nonzero, the fields above are not used. */ + uint32 seq_keysym; /* Really KeySym */ + struct _key_translation *next; } key_translation; + +typedef struct _VCHANNEL +{ + uint16 mcs_id; + char name[8]; + uint32 flags; + struct stream in; + void (*process) (STREAM); +} +VCHANNEL; + +/* PSTCACHE */ +typedef uint8 HASH_KEY[8]; + +/* Header for an entry in the persistent bitmap cache file */ +typedef struct _PSTCACHE_CELLHEADER +{ + HASH_KEY key; + uint8 width, height; + uint16 length; + uint32 stamp; +} +CELLHEADER; + +#define MAX_CBSIZE 256 + +/* RDPSND */ +typedef struct +{ + uint16 wFormatTag; + uint16 nChannels; + uint32 nSamplesPerSec; + uint32 nAvgBytesPerSec; + uint16 nBlockAlign; + uint16 wBitsPerSample; + uint16 cbSize; + uint8 cb[MAX_CBSIZE]; +} WAVEFORMATEX; + +typedef struct _RDPCOMP +{ + uint32 roff; + uint8 hist[RDP_MPPC_DICT_SIZE]; + struct stream ns; +} +RDPCOMP; + +/* RDPDR */ +typedef uint32 NTSTATUS; +typedef uint32 NTHANDLE; + +typedef struct _DEVICE_FNS +{ + NTSTATUS(*create) (uint32 device, uint32 desired_access, uint32 share_mode, + uint32 create_disposition, uint32 flags_and_attributes, char *filename, + NTHANDLE * handle); + NTSTATUS(*close) (NTHANDLE handle); + NTSTATUS(*read) (NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, + uint32 * result); + NTSTATUS(*write) (NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, + uint32 * result); + NTSTATUS(*device_control) (NTHANDLE handle, uint32 request, STREAM in, STREAM out); +} +DEVICE_FNS; + + +typedef struct rdpdr_device_info +{ + uint32 device_type; + NTHANDLE handle; + char name[8]; + char *local_path; + void *pdevice_data; +} +RDPDR_DEVICE; + +typedef struct rdpdr_serial_device_info +{ + int dtr; + int rts; + uint32 control, xonoff, onlimit, offlimit; + uint32 baud_rate, + queue_in_size, + queue_out_size, + wait_mask, + read_interval_timeout, + read_total_timeout_multiplier, + read_total_timeout_constant, + write_total_timeout_multiplier, write_total_timeout_constant, posix_wait_mask; + uint8 stop_bits, parity, word_length; + uint8 chars[6]; + struct termios *ptermios, *pold_termios; + int event_txempty, event_cts, event_dsr, event_rlsd, event_pending; +} +SERIAL_DEVICE; + +typedef struct rdpdr_parallel_device_info +{ + char *driver, *printer; + uint32 queue_in_size, + queue_out_size, + wait_mask, + read_interval_timeout, + read_total_timeout_multiplier, + read_total_timeout_constant, + write_total_timeout_multiplier, + write_total_timeout_constant, posix_wait_mask, bloblen; + uint8 *blob; +} +PARALLEL_DEVICE; + +typedef struct rdpdr_printer_info +{ + FILE *printer_fp; + char *driver, *printer; + uint32 bloblen; + uint8 *blob; + BOOL default_printer; +} +PRINTER; + +typedef struct notify_data +{ + time_t modify_time; + time_t status_time; + time_t total_time; + unsigned int num_entries; +} +NOTIFY; + +typedef struct fileinfo +{ + uint32 device_id, flags_and_attributes, accessmask; + char path[256]; + DIR *pdir; + struct dirent *pdirent; + char pattern[64]; + BOOL delete_on_close; + NOTIFY notify; + uint32 info_class; +} +FILEINFO;