VirtualBox

source: vbox/trunk/src/VBox/RDP/client-1.8.4/proto.h@ 95281

最後變更 在這個檔案從95281是 76779,由 vboxsync 提交於 6 年 前

RDP: add client-1.8.4.
bugref:9356: Update rdesktop-vrdp to 1.8.4
client-1.8.4 is a Subversion copy of 1.8.3 with the upstream 1.8.3 to 1.8.4
patch applied and a couple of fixes and changes after review, namely:

  • Stopped disabling the new pointer data format for our build, as this is no

longer needed.

  • Adjusted some snprintf buffers to make GCC happy.
  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 16.9 KB
 
1/* -*- c-basic-offset: 8 -*-
2 rdesktop: A Remote Desktop Protocol client.
3 Copyright (C) Matthew Chapman 1999-2008
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19/*
20 * Oracle GPL Disclaimer: For the avoidance of doubt, except that if any license choice
21 * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
22 * the General Public License version 2 (GPLv2) at this time for any software where
23 * a choice of GPL license versions is made available with the language indicating
24 * that GPLv2 or any later version may be used, or where a choice of which version
25 * of the GPL is applied is otherwise unspecified.
26 */
27
28#ifndef RDESKTOP_PROTO_H
29#define RDESKTOP_PROTO_H
30
31/* *INDENT-OFF* */
32#ifdef __cplusplus
33extern "C" {
34#endif
35/* *INDENT-ON* */
36/* utils.c */
37char *utils_string_escape(const char *str);
38char *utils_string_unescape(const char *str);
39int utils_locale_to_utf8(const char *src, size_t is, char *dest, size_t os);
40int utils_mkdir_safe(const char *path, int mask);
41int utils_mkdir_p(const char *path, int mask);
42/* bitmap.c */
43RD_BOOL bitmap_decompress(uint8 * output, int width, int height, uint8 * input, int size, int Bpp);
44/* cache.c */
45void cache_rebuild_bmpcache_linked_list(uint8 id, sint16 * idx, int count);
46void cache_bump_bitmap(uint8 id, uint16 idx, int bump);
47void cache_evict_bitmap(uint8 id);
48RD_HBITMAP cache_get_bitmap(uint8 id, uint16 idx);
49void cache_put_bitmap(uint8 id, uint16 idx, RD_HBITMAP bitmap);
50void cache_save_state(void);
51FONTGLYPH *cache_get_font(uint8 font, uint16 character);
52void cache_put_font(uint8 font, uint16 character, uint16 offset, uint16 baseline, uint16 width,
53 uint16 height, RD_HGLYPH pixmap);
54DATABLOB *cache_get_text(uint8 cache_id);
55void cache_put_text(uint8 cache_id, void *data, int length);
56uint8 *cache_get_desktop(uint32 offset, int cx, int cy, int bytes_per_pixel);
57void cache_put_desktop(uint32 offset, int cx, int cy, int scanline, int bytes_per_pixel,
58 uint8 * data);
59RD_HCURSOR cache_get_cursor(uint16 cache_idx);
60void cache_put_cursor(uint16 cache_idx, RD_HCURSOR cursor);
61BRUSHDATA *cache_get_brush_data(uint8 colour_code, uint8 idx);
62void cache_put_brush_data(uint8 colour_code, uint8 idx, BRUSHDATA * brush_data);
63/* channels.c */
64VCHANNEL *channel_register(char *name, uint32 flags, void (*callback) (STREAM));
65STREAM channel_init(VCHANNEL * channel, uint32 length);
66void channel_send(STREAM s, VCHANNEL * channel);
67void channel_process(STREAM s, uint16 mcs_channel);
68/* cliprdr.c */
69void cliprdr_send_simple_native_format_announce(uint32 format);
70void cliprdr_send_native_format_announce(uint8 * formats_data, uint32 formats_data_length);
71void cliprdr_send_data_request(uint32 format);
72void cliprdr_send_data(uint8 * data, uint32 length);
73void cliprdr_set_mode(const char *optarg);
74RD_BOOL cliprdr_init(void);
75/* ctrl.c */
76int ctrl_init(const char *user, const char *domain, const char *host);
77void ctrl_cleanup();
78RD_BOOL ctrl_is_slave();
79int ctrl_send_command(const char *cmd, const char *args);
80void ctrl_add_fds(int *n, fd_set * rfds);
81void ctrl_check_fds(fd_set * rfds, fd_set * wfds);
82
83/* disk.c */
84int disk_enum_devices(uint32 * id, char *optarg);
85RD_NTSTATUS disk_query_information(RD_NTHANDLE handle, uint32 info_class, STREAM out);
86RD_NTSTATUS disk_set_information(RD_NTHANDLE handle, uint32 info_class, STREAM in, STREAM out);
87RD_NTSTATUS disk_check_notify(RD_NTHANDLE handle);
88RD_NTSTATUS disk_create_notify(RD_NTHANDLE handle, uint32 info_class);
89RD_NTSTATUS disk_query_volume_information(RD_NTHANDLE handle, uint32 info_class, STREAM out);
90RD_NTSTATUS disk_query_directory(RD_NTHANDLE handle, uint32 info_class, char *pattern, STREAM out);
91/* mppc.c */
92int mppc_expand(uint8 * data, uint32 clen, uint8 ctype, uint32 * roff, uint32 * rlen);
93/* ewmhints.c */
94int get_current_workarea(uint32 * x, uint32 * y, uint32 * width, uint32 * height);
95void ewmh_init(void);
96/* iso.c */
97STREAM iso_init(int length);
98void iso_send(STREAM s);
99STREAM iso_recv(uint8 * rdpver);
100RD_BOOL iso_connect(char *server, char *username, char *domain, char *password, RD_BOOL reconnect,
101 uint32 * selected_protocol);
102void iso_disconnect(void);
103void iso_reset_state(void);
104/* cssp.c */
105RD_BOOL cssp_connect(char *server, char *user, char *domain, char *password, STREAM s);
106/* licence.c */
107void licence_process(STREAM s);
108/* mcs.c */
109STREAM mcs_init(int length);
110void mcs_send_to_channel(STREAM s, uint16 channel);
111void mcs_send(STREAM s);
112STREAM mcs_recv(uint16 * channel, uint8 * rdpver);
113RD_BOOL mcs_connect_start(char *server, char *username, char *domain, char *password,
114 RD_BOOL reconnect, uint32 * selected_protocol);
115RD_BOOL mcs_connect_finalize(STREAM s);
116void mcs_disconnect(void);
117void mcs_reset_state(void);
118/* orders.c */
119void process_orders(STREAM s, uint16 num_orders);
120void reset_order_state(void);
121/* parallel.c */
122int parallel_enum_devices(uint32 * id, char *optarg);
123/* printer.c */
124int printer_enum_devices(uint32 * id, char *optarg);
125/* printercache.c */
126int printercache_load_blob(char *printer_name, uint8 ** data);
127void printercache_process(STREAM s);
128/* pstcache.c */
129void pstcache_touch_bitmap(uint8 cache_id, uint16 cache_idx, uint32 stamp);
130RD_BOOL pstcache_load_bitmap(uint8 cache_id, uint16 cache_idx);
131RD_BOOL pstcache_save_bitmap(uint8 cache_id, uint16 cache_idx, uint8 * key, uint8 width,
132 uint8 height, uint16 length, uint8 * data);
133int pstcache_enumerate(uint8 id, HASH_KEY * keylist);
134RD_BOOL pstcache_init(uint8 cache_id);
135/* rdesktop.c */
136int main(int argc, char *argv[]);
137void generate_random(uint8 * random);
138void *xmalloc(int size);
139void exit_if_null(void *ptr);
140char *xstrdup(const char *s);
141void *xrealloc(void *oldmem, size_t size);
142void xfree(void *mem);
143void error(char *format, ...);
144void warning(char *format, ...);
145void unimpl(char *format, ...);
146void hexdump(unsigned char *p, unsigned int len);
147char *next_arg(char *src, char needle);
148void toupper_str(char *p);
149RD_BOOL str_startswith(const char *s, const char *prefix);
150RD_BOOL str_handle_lines(const char *input, char **rest, str_handle_lines_t linehandler,
151 void *data);
152RD_BOOL subprocess(char *const argv[], str_handle_lines_t linehandler, void *data);
153char *l_to_a(long N, int base);
154int load_licence(unsigned char **data);
155void save_licence(unsigned char *data, int length);
156void rd_create_ui(void);
157RD_BOOL rd_pstcache_mkdir(void);
158int rd_open_file(char *filename);
159void rd_close_file(int fd);
160int rd_read_file(int fd, void *ptr, int len);
161int rd_write_file(int fd, void *ptr, int len);
162int rd_lseek_file(int fd, int offset);
163RD_BOOL rd_lock_file(int fd, int start, int len);
164/* rdp5.c */
165void rdp5_process(STREAM s);
166/* rdp.c */
167void rdp_out_unistr(STREAM s, char *string, int len);
168void rdp_in_unistr(STREAM s, int in_len, char **string, uint32 * str_size);
169void rdp_send_input(uint32 time, uint16 message_type, uint16 device_flags, uint16 param1,
170 uint16 param2);
171void rdp_send_client_window_status(int status);
172void process_colour_pointer_pdu(STREAM s);
173void process_new_pointer_pdu(STREAM s);
174void process_cached_pointer_pdu(STREAM s);
175void process_system_pointer_pdu(STREAM s);
176void process_bitmap_updates(STREAM s);
177void process_palette(STREAM s);
178void process_disconnect_pdu(STREAM s, uint32 * ext_disc_reason);
179void rdp_main_loop(RD_BOOL * deactivated, uint32 * ext_disc_reason);
180RD_BOOL rdp_loop(RD_BOOL * deactivated, uint32 * ext_disc_reason);
181RD_BOOL rdp_connect(char *server, uint32 flags, char *domain, char *password, char *command,
182 char *directory, RD_BOOL reconnect);
183void rdp_reset_state(void);
184void rdp_disconnect(void);
185void rdp_protocol_error(const char *message, STREAM s);
186/* rdpdr.c */
187int get_device_index(RD_NTHANDLE handle);
188void convert_to_unix_filename(char *filename);
189void rdpdr_send_completion(uint32 device, uint32 id, uint32 status, uint32 result, uint8 * buffer,
190 uint32 length);
191RD_BOOL rdpdr_init();
192void rdpdr_add_fds(int *n, fd_set * rfds, fd_set * wfds, struct timeval *tv, RD_BOOL * timeout);
193struct async_iorequest *rdpdr_remove_iorequest(struct async_iorequest *prev,
194 struct async_iorequest *iorq);
195void rdpdr_check_fds(fd_set * rfds, fd_set * wfds, RD_BOOL timed_out);
196RD_BOOL rdpdr_abort_io(uint32 fd, uint32 major, RD_NTSTATUS status);
197/* rdpsnd.c */
198void rdpsnd_record(const void *data, unsigned int size);
199RD_BOOL rdpsnd_init(char *optarg);
200void rdpsnd_show_help(void);
201void rdpsnd_add_fds(int *n, fd_set * rfds, fd_set * wfds, struct timeval *tv);
202void rdpsnd_check_fds(fd_set * rfds, fd_set * wfds);
203struct audio_packet *rdpsnd_queue_current_packet(void);
204RD_BOOL rdpsnd_queue_empty(void);
205void rdpsnd_queue_next(unsigned long completed_in_us);
206int rdpsnd_queue_next_tick(void);
207void rdpsnd_reset_state(void);
208/* secure.c */
209void sec_hash_to_string(char *out, int out_size, uint8 * in, int in_size);
210void sec_hash_sha1_16(uint8 * out, uint8 * in, uint8 * salt1);
211void sec_hash_48(uint8 * out, uint8 * in, uint8 * salt1, uint8 * salt2, uint8 salt);
212void sec_hash_16(uint8 * out, uint8 * in, uint8 * salt1, uint8 * salt2);
213void buf_out_uint32(uint8 * buffer, uint32 value);
214void sec_sign(uint8 * signature, int siglen, uint8 * session_key, int keylen, uint8 * data,
215 int datalen);
216void sec_decrypt(uint8 * data, int length);
217STREAM sec_init(uint32 flags, int maxlen);
218void sec_send_to_channel(STREAM s, uint32 flags, uint16 channel);
219void sec_send(STREAM s, uint32 flags);
220void sec_process_mcs_data(STREAM s);
221STREAM sec_recv(uint8 * rdpver);
222RD_BOOL sec_connect(char *server, char *username, char *domain, char *password, RD_BOOL reconnect);
223void sec_disconnect(void);
224void sec_reset_state(void);
225/* serial.c */
226int serial_enum_devices(uint32 * id, char *optarg);
227RD_BOOL serial_get_event(RD_NTHANDLE handle, uint32 * result);
228RD_BOOL serial_get_timeout(RD_NTHANDLE handle, uint32 length, uint32 * timeout,
229 uint32 * itv_timeout);
230/* tcp.c */
231STREAM tcp_init(uint32 maxlen);
232void tcp_send(STREAM s);
233STREAM tcp_recv(STREAM s, uint32 length);
234RD_BOOL tcp_connect(char *server);
235void tcp_disconnect(void);
236char *tcp_get_address(void);
237RD_BOOL tcp_is_connected(void);
238void tcp_reset_state(void);
239RD_BOOL tcp_tls_connect(void);
240RD_BOOL tcp_tls_get_server_pubkey(STREAM s);
241void tcp_run_ui(RD_BOOL run);
242
243/* asn.c */
244RD_BOOL ber_in_header(STREAM s, int *tagval, int *length);
245void ber_out_header(STREAM s, int tagval, int length);
246RD_BOOL ber_parse_header(STREAM s, int tagval, uint32 *length);
247void ber_out_integer(STREAM s, int value);
248
249/* xclip.c */
250void ui_clip_format_announce(uint8 * data, uint32 length);
251void ui_clip_handle_data(uint8 * data, uint32 length);
252void ui_clip_request_failed(void);
253void ui_clip_request_data(uint32 format);
254void ui_clip_sync(void);
255void ui_clip_set_mode(const char *optarg);
256void xclip_init(void);
257void xclip_deinit(void);
258/* xkeymap.c */
259RD_BOOL xkeymap_from_locale(const char *locale);
260FILE *xkeymap_open(const char *filename);
261void xkeymap_init(void);
262RD_BOOL handle_special_keys(uint32 keysym, unsigned int state, uint32 ev_time, RD_BOOL pressed);
263key_translation xkeymap_translate_key(uint32 keysym, unsigned int keycode, unsigned int state);
264void xkeymap_send_keys(uint32 keysym, unsigned int keycode, unsigned int state, uint32 ev_time,
265 RD_BOOL pressed, uint8 nesting);
266uint16 xkeymap_translate_button(unsigned int button);
267char *get_ksname(uint32 keysym);
268void save_remote_modifiers(uint8 scancode);
269void restore_remote_modifiers(uint32 ev_time, uint8 scancode);
270void ensure_remote_modifiers(uint32 ev_time, key_translation tr);
271unsigned int read_keyboard_state(void);
272uint16 ui_get_numlock_state(unsigned int state);
273void reset_modifier_keys(void);
274void rdp_send_scancode(uint32 time, uint16 flags, uint8 scancode);
275/* xwin.c */
276RD_BOOL get_key_state(unsigned int state, uint32 keysym);
277RD_BOOL ui_init(void);
278void ui_init_connection(void);
279void ui_deinit(void);
280RD_BOOL ui_create_window(void);
281void ui_resize_window(void);
282void ui_destroy_window(void);
283RD_BOOL ui_have_window(void);
284void xwin_toggle_fullscreen(void);
285int ui_select(int rdp_socket);
286void ui_move_pointer(int x, int y);
287RD_HBITMAP ui_create_bitmap(int width, int height, uint8 * data);
288void ui_paint_bitmap(int x, int y, int cx, int cy, int width, int height, uint8 * data);
289void ui_destroy_bitmap(RD_HBITMAP bmp);
290RD_HGLYPH ui_create_glyph(int width, int height, uint8 * data);
291void ui_destroy_glyph(RD_HGLYPH glyph);
292RD_HCURSOR ui_create_cursor(unsigned int x, unsigned int y, int width, int height, uint8 * andmask,
293 uint8 * xormask, int bpp);
294void ui_set_cursor(RD_HCURSOR cursor);
295void ui_destroy_cursor(RD_HCURSOR cursor);
296void ui_set_null_cursor(void);
297RD_HCOLOURMAP ui_create_colourmap(COLOURMAP * colours);
298void ui_destroy_colourmap(RD_HCOLOURMAP map);
299void ui_set_colourmap(RD_HCOLOURMAP map);
300void ui_set_clip(int x, int y, int cx, int cy);
301void ui_reset_clip(void);
302void ui_bell(void);
303void ui_destblt(uint8 opcode, int x, int y, int cx, int cy);
304void ui_patblt(uint8 opcode, int x, int y, int cx, int cy, BRUSH * brush, int bgcolour,
305 int fgcolour);
306void ui_screenblt(uint8 opcode, int x, int y, int cx, int cy, int srcx, int srcy);
307void ui_memblt(uint8 opcode, int x, int y, int cx, int cy, RD_HBITMAP src, int srcx, int srcy);
308void ui_triblt(uint8 opcode, int x, int y, int cx, int cy, RD_HBITMAP src, int srcx, int srcy,
309 BRUSH * brush, int bgcolour, int fgcolour);
310void ui_line(uint8 opcode, int startx, int starty, int endx, int endy, PEN * pen);
311void ui_rect(int x, int y, int cx, int cy, int colour);
312void ui_polygon(uint8 opcode, uint8 fillmode, RD_POINT * point, int npoints, BRUSH * brush,
313 int bgcolour, int fgcolour);
314void ui_polyline(uint8 opcode, RD_POINT * points, int npoints, PEN * pen);
315void ui_ellipse(uint8 opcode, uint8 fillmode, int x, int y, int cx, int cy, BRUSH * brush,
316 int bgcolour, int fgcolour);
317void ui_draw_glyph(int mixmode, int x, int y, int cx, int cy, RD_HGLYPH glyph, int srcx, int srcy,
318 int bgcolour, int fgcolour);
319void ui_draw_text(uint8 font, uint8 flags, uint8 opcode, int mixmode, int x, int y, int clipx,
320 int clipy, int clipcx, int clipcy, int boxx, int boxy, int boxcx, int boxcy,
321 BRUSH * brush, int bgcolour, int fgcolour, uint8 * text, uint8 length);
322void ui_desktop_save(uint32 offset, int x, int y, int cx, int cy);
323void ui_desktop_restore(uint32 offset, int x, int y, int cx, int cy);
324void ui_begin_update(void);
325void ui_end_update(void);
326void ui_seamless_begin(RD_BOOL hidden);
327void ui_seamless_end();
328void ui_seamless_hide_desktop(void);
329void ui_seamless_unhide_desktop(void);
330void ui_seamless_toggle(void);
331void ui_seamless_create_window(unsigned long id, unsigned long group, unsigned long parent,
332 unsigned long flags);
333void ui_seamless_destroy_window(unsigned long id, unsigned long flags);
334void ui_seamless_destroy_group(unsigned long id, unsigned long flags);
335void ui_seamless_seticon(unsigned long id, const char *format, int width, int height, int chunk,
336 const char *data, int chunk_len);
337void ui_seamless_delicon(unsigned long id, const char *format, int width, int height);
338void ui_seamless_move_window(unsigned long id, int x, int y, int width, int height,
339 unsigned long flags);
340void ui_seamless_restack_window(unsigned long id, unsigned long behind, unsigned long flags);
341void ui_seamless_settitle(unsigned long id, const char *title, unsigned long flags);
342void ui_seamless_setstate(unsigned long id, unsigned int state, unsigned long flags);
343void ui_seamless_syncbegin(unsigned long flags);
344void ui_seamless_ack(unsigned int serial);
345/* lspci.c */
346RD_BOOL lspci_init(void);
347/* seamless.c */
348RD_BOOL seamless_init(void);
349void seamless_reset_state(void);
350unsigned int seamless_send_sync(void);
351unsigned int seamless_send_state(unsigned long id, unsigned int state, unsigned long flags);
352unsigned int seamless_send_position(unsigned long id, int x, int y, int width, int height,
353 unsigned long flags);
354void seamless_select_timeout(struct timeval *tv);
355unsigned int seamless_send_zchange(unsigned long id, unsigned long below, unsigned long flags);
356unsigned int seamless_send_focus(unsigned long id, unsigned long flags);
357unsigned int seamless_send_destroy(unsigned long id);
358unsigned int seamless_send_spawn(char *cmd);
359unsigned int seamless_send_persistent(RD_BOOL);
360
361/* scard.c */
362void scard_lock(int lock);
363void scard_unlock(int lock);
364int scard_enum_devices(uint32 * id, char *optarg);
365void scardSetInfo(uint32 epoch, uint32 device, uint32 id, uint32 bytes_out);
366void scard_reset_state();
367/* vrdp/rdpusb.c */
368RD_BOOL rdpusb_init(void);
369void rdpusb_close (void);
370void rdpusb_add_fds(int *n, fd_set * rfds, fd_set * wfds);
371void rdpusb_check_fds(fd_set * rfds, fd_set * wfds);
372
373/* *INDENT-OFF* */
374#ifdef __cplusplus
375}
376#endif
377/* *INDENT-ON* */
378
379#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette