VirtualBox

source: vbox/trunk/include/VBox/HostServices/VBoxClipboardExt.h@ 85123

Last change on this file since 85123 was 85121, checked in by vboxsync, 4 years ago

iprt/cdefs.h: Refactored the typedef use of DECLCALLBACK as well as DECLCALLBACKMEMBER to wrap the whole expression, similar to the DECLR?CALLBACKMEMBER macros. This allows adding a throw() at the end when compiling with the VC++ compiler to indicate that the callbacks won't throw anything, so we can stop supressing the C5039 warning about passing functions that can potential throw C++ exceptions to extern C code that can't necessarily cope with such (unwind,++). Introduced a few _EX variations that allows specifying different/no calling convention too, as that's handy when dynamically resolving host APIs. Fixed numerous places missing DECLCALLBACK and such. Left two angry @todos regarding use of CreateThread. bugref:9794

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.6 KB
Line 
1/** @file
2 * Shared Clipboard - Common header for the service extension.
3 */
4
5/*
6 * Copyright (C) 2006-2020 Oracle Corporation
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * The contents of this file may alternatively be used under the terms
17 * of the Common Development and Distribution License Version 1.0
18 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19 * VirtualBox OSE distribution, in which case the provisions of the
20 * CDDL are applicable instead of those of the GPL.
21 *
22 * You may elect to license modified versions of this file under the
23 * terms and conditions of either the GPL or the CDDL or both.
24 */
25
26#ifndef VBOX_INCLUDED_HostServices_VBoxClipboardExt_h
27#define VBOX_INCLUDED_HostServices_VBoxClipboardExt_h
28#ifndef RT_WITHOUT_PRAGMA_ONCE
29# pragma once
30#endif
31
32#include <VBox/types.h>
33#ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
34# include <VBox/GuestHost/SharedClipboard-transfers.h>
35#endif
36
37#define VBOX_CLIPBOARD_EXT_FN_SET_CALLBACK (0)
38#define VBOX_CLIPBOARD_EXT_FN_FORMAT_ANNOUNCE (1)
39#define VBOX_CLIPBOARD_EXT_FN_DATA_READ (2)
40#define VBOX_CLIPBOARD_EXT_FN_DATA_WRITE (3)
41/** Registers a new clipboard area.
42 * Uses the SHCLEXTAREAPARMS struct. */
43#define VBOX_CLIPBOARD_EXT_FN_AREA_REGISTER (4)
44/** Unregisters an existing clipboard area.
45 * Uses the SHCLEXTAREAPARMS struct. */
46#define VBOX_CLIPBOARD_EXT_FN_AREA_UNREGISTER (5)
47/** Attaches to an existing clipboard area.
48 * Uses the SHCLEXTAREAPARMS struct. */
49#define VBOX_CLIPBOARD_EXT_FN_AREA_ATTACH (6)
50/** Detaches from an existing clipboard area.
51 * Uses the SHCLEXTAREAPARMS struct. */
52#define VBOX_CLIPBOARD_EXT_FN_AREA_DETACH (7)
53
54typedef DECLCALLBACKTYPE(int, FNVRDPCLIPBOARDEXTCALLBACK,(uint32_t u32Function, uint32_t u32Format, void *pvData, uint32_t cbData));
55typedef FNVRDPCLIPBOARDEXTCALLBACK *PFNVRDPCLIPBOARDEXTCALLBACK;
56
57typedef struct _SHCLEXTPARMS
58{
59 uint32_t uFormat;
60 union
61 {
62 void *pvData;
63 PFNVRDPCLIPBOARDEXTCALLBACK pfnCallback;
64 } u;
65 uint32_t cbData;
66} SHCLEXTPARMS;
67
68#ifdef VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS
69typedef uint32_t SHCLEXTAREAREGISTETRFLAGS;
70/** No clipboard register area flags specified. */
71#define SHCLEXTAREA_REGISTER_FLAGS_NONE 0
72
73typedef uint32_t SHCLEXTAREAATTACHFLAGS;
74/** No clipboard attach area flags specified. */
75#define SHCLEXTAREA_ATTACH_FLAGS_NONE 0
76
77/**
78 * Structure for keeping clipboard area callback parameters.
79 */
80typedef struct _SHCLEXTAREAPARMS
81{
82 /** The clipboard area's ID the callback is for. */
83 SHCLAREAID uID;
84 union
85 {
86 struct
87 {
88 void *pvData;
89 uint32_t cbData;
90 /** Area register flags; not used yet and must be set to 0. */
91 SHCLEXTAREAREGISTETRFLAGS fFlags;
92 } fn_register;
93 struct
94 {
95 /** Area attach flags; not used yet and must be set to 0. */
96 SHCLEXTAREAATTACHFLAGS fFlags;
97 } fn_attach;
98 } u;
99} SHCLEXTAREAPARMS, *PSHCLEXTAREAPARMS;
100#endif /* VBOX_WITH_SHARED_CLIPBOARD_TRANSFERS */
101
102#endif /* !VBOX_INCLUDED_HostServices_VBoxClipboardExt_h */
Note: See TracBrowser for help on using the repository browser.

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