VirtualBox

source: vbox/trunk/src/VBox/RDP/client-1.8.3/proto.h@ 55123

最後變更 在這個檔案從55123是 55123,由 vboxsync 提交於 10 年 前

rdesktop 1.8.3 modified for VBox

  • 屬性 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);
185/* rdpdr.c */
186int get_device_index(RD_NTHANDLE handle);
187void convert_to_unix_filename(char *filename);
188void rdpdr_send_completion(uint32 device, uint32 id, uint32 status, uint32 result, uint8 * buffer,
189 uint32 length);
190RD_BOOL rdpdr_init();
191void rdpdr_add_fds(int *n, fd_set * rfds, fd_set * wfds, struct timeval *tv, RD_BOOL * timeout);
192struct async_iorequest *rdpdr_remove_iorequest(struct async_iorequest *prev,
193 struct async_iorequest *iorq);
194void rdpdr_check_fds(fd_set * rfds, fd_set * wfds, RD_BOOL timed_out);
195RD_BOOL rdpdr_abort_io(uint32 fd, uint32 major, RD_NTSTATUS status);
196/* rdpsnd.c */
197void rdpsnd_record(const void *data, unsigned int size);
198RD_BOOL rdpsnd_init(char *optarg);
199void rdpsnd_show_help(void);
200void rdpsnd_add_fds(int *n, fd_set * rfds, fd_set * wfds, struct timeval *tv);
201void rdpsnd_check_fds(fd_set * rfds, fd_set * wfds);
202struct audio_packet *rdpsnd_queue_current_packet(void);
203RD_BOOL rdpsnd_queue_empty(void);
204void rdpsnd_queue_next(unsigned long completed_in_us);
205int rdpsnd_queue_next_tick(void);
206void rdpsnd_reset_state(void);
207/* secure.c */
208void sec_hash_to_string(char *out, int out_size, uint8 * in, int in_size);
209void sec_hash_sha1_16(uint8 * out, uint8 * in, uint8 * salt1);
210void sec_hash_48(uint8 * out, uint8 * in, uint8 * salt1, uint8 * salt2, uint8 salt);
211void sec_hash_16(uint8 * out, uint8 * in, uint8 * salt1, uint8 * salt2);
212void buf_out_uint32(uint8 * buffer, uint32 value);
213void sec_sign(uint8 * signature, int siglen, uint8 * session_key, int keylen, uint8 * data,
214 int datalen);
215void sec_decrypt(uint8 * data, int length);
216STREAM sec_init(uint32 flags, int maxlen);
217void sec_send_to_channel(STREAM s, uint32 flags, uint16 channel);
218void sec_send(STREAM s, uint32 flags);
219void sec_process_mcs_data(STREAM s);
220STREAM sec_recv(uint8 * rdpver);
221RD_BOOL sec_connect(char *server, char *username, char *domain, char *password, RD_BOOL reconnect);
222void sec_disconnect(void);
223void sec_reset_state(void);
224/* serial.c */
225int serial_enum_devices(uint32 * id, char *optarg);
226RD_BOOL serial_get_event(RD_NTHANDLE handle, uint32 * result);
227RD_BOOL serial_get_timeout(RD_NTHANDLE handle, uint32 length, uint32 * timeout,
228 uint32 * itv_timeout);
229/* tcp.c */
230STREAM tcp_init(uint32 maxlen);
231void tcp_send(STREAM s);
232STREAM tcp_recv(STREAM s, uint32 length);
233RD_BOOL tcp_connect(char *server);
234void tcp_disconnect(void);
235char *tcp_get_address(void);
236RD_BOOL tcp_is_connected(void);
237void tcp_reset_state(void);
238RD_BOOL tcp_tls_connect(void);
239RD_BOOL tcp_tls_get_server_pubkey(STREAM s);
240void tcp_run_ui(RD_BOOL run);
241
242/* asn.c */
243RD_BOOL ber_in_header(STREAM s, int *tagval, int *length);
244void ber_out_header(STREAM s, int tagval, int length);
245RD_BOOL ber_parse_header(STREAM s, int tagval, int *length);
246void ber_out_integer(STREAM s, int value);
247
248/* xclip.c */
249void ui_clip_format_announce(uint8 * data, uint32 length);
250void ui_clip_handle_data(uint8 * data, uint32 length);
251void ui_clip_request_failed(void);
252void ui_clip_request_data(uint32 format);
253void ui_clip_sync(void);
254void ui_clip_set_mode(const char *optarg);
255void xclip_init(void);
256void xclip_deinit(void);
257/* xkeymap.c */
258RD_BOOL xkeymap_from_locale(const char *locale);
259FILE *xkeymap_open(const char *filename);
260void xkeymap_init(void);
261RD_BOOL handle_special_keys(uint32 keysym, unsigned int state, uint32 ev_time, RD_BOOL pressed);
262key_translation xkeymap_translate_key(uint32 keysym, unsigned int keycode, unsigned int state);
263void xkeymap_send_keys(uint32 keysym, unsigned int keycode, unsigned int state, uint32 ev_time,
264 RD_BOOL pressed, uint8 nesting);
265uint16 xkeymap_translate_button(unsigned int button);
266char *get_ksname(uint32 keysym);
267void save_remote_modifiers(uint8 scancode);
268void restore_remote_modifiers(uint32 ev_time, uint8 scancode);
269void ensure_remote_modifiers(uint32 ev_time, key_translation tr);
270unsigned int read_keyboard_state(void);
271uint16 ui_get_numlock_state(unsigned int state);
272void reset_modifier_keys(void);
273void rdp_send_scancode(uint32 time, uint16 flags, uint8 scancode);
274/* xwin.c */
275RD_BOOL get_key_state(unsigned int state, uint32 keysym);
276RD_BOOL ui_init(void);
277void ui_init_connection(void);
278void ui_deinit(void);
279RD_BOOL ui_create_window(void);
280void ui_resize_window(void);
281void ui_destroy_window(void);
282RD_BOOL ui_have_window(void);
283void xwin_toggle_fullscreen(void);
284int ui_select(int rdp_socket);
285void ui_move_pointer(int x, int y);
286RD_HBITMAP ui_create_bitmap(int width, int height, uint8 * data);
287void ui_paint_bitmap(int x, int y, int cx, int cy, int width, int height, uint8 * data);
288void ui_destroy_bitmap(RD_HBITMAP bmp);
289RD_HGLYPH ui_create_glyph(int width, int height, uint8 * data);
290void ui_destroy_glyph(RD_HGLYPH glyph);
291RD_HCURSOR ui_create_cursor(unsigned int x, unsigned int y, int width, int height, uint8 * andmask,
292 uint8 * xormask, int bpp);
293void ui_set_cursor(RD_HCURSOR cursor);
294void ui_destroy_cursor(RD_HCURSOR cursor);
295void ui_set_null_cursor(void);
296RD_HCOLOURMAP ui_create_colourmap(COLOURMAP * colours);
297void ui_destroy_colourmap(RD_HCOLOURMAP map);
298void ui_set_colourmap(RD_HCOLOURMAP map);
299void ui_set_clip(int x, int y, int cx, int cy);
300void ui_reset_clip(void);
301void ui_bell(void);
302void ui_destblt(uint8 opcode, int x, int y, int cx, int cy);
303void ui_patblt(uint8 opcode, int x, int y, int cx, int cy, BRUSH * brush, int bgcolour,
304 int fgcolour);
305void ui_screenblt(uint8 opcode, int x, int y, int cx, int cy, int srcx, int srcy);
306void ui_memblt(uint8 opcode, int x, int y, int cx, int cy, RD_HBITMAP src, int srcx, int srcy);
307void ui_triblt(uint8 opcode, int x, int y, int cx, int cy, RD_HBITMAP src, int srcx, int srcy,
308 BRUSH * brush, int bgcolour, int fgcolour);
309void ui_line(uint8 opcode, int startx, int starty, int endx, int endy, PEN * pen);
310void ui_rect(int x, int y, int cx, int cy, int colour);
311void ui_polygon(uint8 opcode, uint8 fillmode, RD_POINT * point, int npoints, BRUSH * brush,
312 int bgcolour, int fgcolour);
313void ui_polyline(uint8 opcode, RD_POINT * points, int npoints, PEN * pen);
314void ui_ellipse(uint8 opcode, uint8 fillmode, int x, int y, int cx, int cy, BRUSH * brush,
315 int bgcolour, int fgcolour);
316void ui_draw_glyph(int mixmode, int x, int y, int cx, int cy, RD_HGLYPH glyph, int srcx, int srcy,
317 int bgcolour, int fgcolour);
318void ui_draw_text(uint8 font, uint8 flags, uint8 opcode, int mixmode, int x, int y, int clipx,
319 int clipy, int clipcx, int clipcy, int boxx, int boxy, int boxcx, int boxcy,
320 BRUSH * brush, int bgcolour, int fgcolour, uint8 * text, uint8 length);
321void ui_desktop_save(uint32 offset, int x, int y, int cx, int cy);
322void ui_desktop_restore(uint32 offset, int x, int y, int cx, int cy);
323void ui_begin_update(void);
324void ui_end_update(void);
325void ui_seamless_begin(RD_BOOL hidden);
326void ui_seamless_end();
327void ui_seamless_hide_desktop(void);
328void ui_seamless_unhide_desktop(void);
329void ui_seamless_toggle(void);
330void ui_seamless_create_window(unsigned long id, unsigned long group, unsigned long parent,
331 unsigned long flags);
332void ui_seamless_destroy_window(unsigned long id, unsigned long flags);
333void ui_seamless_destroy_group(unsigned long id, unsigned long flags);
334void ui_seamless_seticon(unsigned long id, const char *format, int width, int height, int chunk,
335 const char *data, int chunk_len);
336void ui_seamless_delicon(unsigned long id, const char *format, int width, int height);
337void ui_seamless_move_window(unsigned long id, int x, int y, int width, int height,
338 unsigned long flags);
339void ui_seamless_restack_window(unsigned long id, unsigned long behind, unsigned long flags);
340void ui_seamless_settitle(unsigned long id, const char *title, unsigned long flags);
341void ui_seamless_setstate(unsigned long id, unsigned int state, unsigned long flags);
342void ui_seamless_syncbegin(unsigned long flags);
343void ui_seamless_ack(unsigned int serial);
344/* lspci.c */
345RD_BOOL lspci_init(void);
346/* seamless.c */
347RD_BOOL seamless_init(void);
348void seamless_reset_state(void);
349unsigned int seamless_send_sync(void);
350unsigned int seamless_send_state(unsigned long id, unsigned int state, unsigned long flags);
351unsigned int seamless_send_position(unsigned long id, int x, int y, int width, int height,
352 unsigned long flags);
353void seamless_select_timeout(struct timeval *tv);
354unsigned int seamless_send_zchange(unsigned long id, unsigned long below, unsigned long flags);
355unsigned int seamless_send_focus(unsigned long id, unsigned long flags);
356unsigned int seamless_send_destroy(unsigned long id);
357unsigned int seamless_send_spawn(char *cmd);
358unsigned int seamless_send_persistent(RD_BOOL);
359
360/* scard.c */
361void scard_lock(int lock);
362void scard_unlock(int lock);
363int scard_enum_devices(uint32 * id, char *optarg);
364void scardSetInfo(uint32 epoch, uint32 device, uint32 id, uint32 bytes_out);
365void scard_reset_state();
366/* vrdp/rdpusb.c */
367RD_BOOL rdpusb_init(void);
368void rdpusb_close (void);
369void rdpusb_add_fds(int *n, fd_set * rfds, fd_set * wfds);
370void rdpusb_check_fds(fd_set * rfds, fd_set * wfds);
371
372/* *INDENT-OFF* */
373#ifdef __cplusplus
374}
375#endif
376/* *INDENT-ON* */
377
378#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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