VirtualBox

source: vbox/trunk/include/VBox/RemoteDesktop/VRDETSMF.h@ 69107

Last change on this file since 69107 was 69107, checked in by vboxsync, 7 years ago

include/VBox/: (C) year

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.1 KB
Line 
1/* @file
2 * VBox Remote Desktop Extension (VRDE) - raw TSMF dynamic channel interface.
3 */
4
5/*
6 * Copyright (C) 2012-2017 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_RemoteDesktop_VRDETSMF_h
27#define ___VBox_RemoteDesktop_VRDETSMF_h
28
29#include <VBox/RemoteDesktop/VRDE.h>
30
31/*
32 * Interface creating a TSMF dynamic channel instances and sending/receving data.
33 *
34 * Async callbacks are used for providing feedback, reporting errors, etc.
35 */
36
37#define VRDE_TSMF_INTERFACE_NAME "TSMFRAW"
38
39/* The VRDE server TSMF interface entry points. Interface version 1. */
40typedef struct VRDETSMFINTERFACE
41{
42 /* The header. */
43 VRDEINTERFACEHDR header;
44
45 /* Create a new TSMF channel instance.
46 * The channel is created only for one client, which is connected to the server.
47 * The client is the first which supports dynamic RDP channels.
48 *
49 * If this method return success then the server will use the VRDE_TSMF_N_CREATE_*
50 * notification to report the channel handle.
51 *
52 * @param hServer The VRDE server instance.
53 * @param pvChannel A context to be associated with the channel.
54 * @param u32Flags VRDE_TSMF_F_*
55 *
56 * @return IPRT status code.
57 */
58 DECLR3CALLBACKMEMBER(int, VRDETSMFChannelCreate, (HVRDESERVER hServer,
59 void *pvChannel,
60 uint32_t u32Flags));
61
62 /* Close a TSMF channel instance.
63 *
64 * @param hServer The VRDE server instance.
65 * @param u32ChannelHandle Which channel to close.
66 *
67 * @return IPRT status code.
68 */
69 DECLR3CALLBACKMEMBER(int, VRDETSMFChannelClose, (HVRDESERVER hServer,
70 uint32_t u32ChannelHandle));
71
72 /* Send data to the TSMF channel instance.
73 *
74 * @param hServer The VRDE server instance.
75 * @param u32ChannelHandle Channel to send data.
76 * @param pvData Raw data to be sent, the format depends on which
77 * u32Flags were specified in Create: TSMF message,
78 * or channel header + TSMF message.
79 * @param cbData Size of data.
80 *
81 * @return IPRT status code.
82 */
83 DECLR3CALLBACKMEMBER(int, VRDETSMFChannelSend, (HVRDESERVER hServer,
84 uint32_t u32ChannelHandle,
85 const void *pvData,
86 uint32_t cbData));
87} VRDETSMFINTERFACE;
88
89/* TSMF interface callbacks. */
90typedef struct VRDETSMFCALLBACKS
91{
92 /* The header. */
93 VRDEINTERFACEHDR header;
94
95 /* Channel event notification.
96 *
97 * @param pvContext The callbacks context specified in VRDEGetInterface.
98 * @param u32Notification The kind of the notification: VRDE_TSMF_N_*.
99 * @param pvChannel A context which was used in VRDETSMFChannelCreate.
100 * @param pvParm The notification specific data.
101 * @param cbParm The size of buffer pointed by pvParm.
102 *
103 * @return IPRT status code.
104 */
105 DECLR3CALLBACKMEMBER(void, VRDETSMFCbNotify, (void *pvContext,
106 uint32_t u32Notification,
107 void *pvChannel,
108 const void *pvParm,
109 uint32_t cbParm));
110} VRDETSMFCALLBACKS;
111
112
113/* VRDETSMFChannelCreate::u32Flags */
114#define VRDE_TSMF_F_CHANNEL_HEADER 0x00000001
115
116
117/* VRDETSMFCbNotify::u32Notification */
118#define VRDE_TSMF_N_CREATE_ACCEPTED 1
119#define VRDE_TSMF_N_CREATE_DECLINED 2
120#define VRDE_TSMF_N_DATA 3 /* Data received. */
121#define VRDE_TSMF_N_DISCONNECTED 4 /* The channel is not connected anymore. */
122
123
124/*
125 * Notification parameters.
126 */
127
128/* VRDE_TSMF_N_CREATE_ACCEPTED */
129typedef struct VRDETSMFNOTIFYCREATEACCEPTED
130{
131 uint32_t u32ChannelHandle;
132} VRDETSMFNOTIFYCREATEACCEPTED;
133
134/* VRDE_TSMF_N_EVENT_DATA */
135typedef struct VRDETSMFNOTIFYDATA
136{
137 const void *pvData;
138 uint32_t cbData; /* How many bytes available. */
139} VRDETSMFNOTIFYDATA;
140
141#endif
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