VirtualBox

source: vbox/trunk/include/VBox/vrdpusb.h@ 95440

Last change on this file since 95440 was 94368, checked in by vboxsync, 3 years ago

Main,UsbWebcam: Drop passing pointers through CFGM in favor of using VMM2USERMETHODS::pfnQueryGenericObject, bugref:10053

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.9 KB
Line 
1/** @file
2 * VBox Remote Desktop Protocol - Remote USB backend interface. (VRDP)
3 */
4
5/*
6 * Copyright (C) 2006-2022 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_vrdpusb_h
27#define VBOX_INCLUDED_vrdpusb_h
28#ifndef RT_WITHOUT_PRAGMA_ONCE
29# pragma once
30#endif
31
32#include <VBox/cdefs.h>
33#include <VBox/types.h>
34
35#ifdef IN_RING0
36# error "There are no VRDP APIs available in Ring-0 Host Context!"
37#endif
38#ifdef IN_RC
39# error "There are no VRDP APIs available Guest Context!"
40#endif
41
42
43/** @defgroup grp_vrdpusb Remote USB over VURP
44 * @ingroup grp_vusb
45 * @{
46 */
47
48#define REMOTE_USB_BACKEND_PREFIX_S "REMOTEUSB"
49#define REMOTE_USB_BACKEND_PREFIX_LEN 9
50
51/* Forward declaration. */
52struct _REMOTEUSBDEVICE;
53typedef struct _REMOTEUSBDEVICE *PREMOTEUSBDEVICE;
54
55/* Forward declaration. */
56struct _REMOTEUSBQURB;
57typedef struct _REMOTEUSBQURB *PREMOTEUSBQURB;
58
59/* Forward declaration. Actually a class. */
60struct _REMOTEUSBBACKEND;
61typedef struct _REMOTEUSBBACKEND *PREMOTEUSBBACKEND;
62
63/**
64 * Pointer to this structure is queried from USBREMOTEIF::pfnQueryRemoteUsbBackend.
65 */
66typedef struct REMOTEUSBCALLBACK
67{
68 PREMOTEUSBBACKEND pInstance;
69
70 DECLCALLBACKMEMBER(int, pfnOpen,(PREMOTEUSBBACKEND pInstance, const char *pszAddress, size_t cbAddress, PREMOTEUSBDEVICE *ppDevice));
71 DECLCALLBACKMEMBER(void, pfnClose,(PREMOTEUSBDEVICE pDevice));
72 DECLCALLBACKMEMBER(int, pfnReset,(PREMOTEUSBDEVICE pDevice));
73 DECLCALLBACKMEMBER(int, pfnSetConfig,(PREMOTEUSBDEVICE pDevice, uint8_t u8Cfg));
74 DECLCALLBACKMEMBER(int, pfnClaimInterface,(PREMOTEUSBDEVICE pDevice, uint8_t u8Ifnum));
75 DECLCALLBACKMEMBER(int, pfnReleaseInterface,(PREMOTEUSBDEVICE pDevice, uint8_t u8Ifnum));
76 DECLCALLBACKMEMBER(int, pfnInterfaceSetting,(PREMOTEUSBDEVICE pDevice, uint8_t u8Ifnum, uint8_t u8Setting));
77 DECLCALLBACKMEMBER(int, pfnQueueURB,(PREMOTEUSBDEVICE pDevice, uint8_t u8Type, uint8_t u8Ep, uint8_t u8Direction, uint32_t u32Len, void *pvData, void *pvURB, PREMOTEUSBQURB *ppRemoteURB));
78 DECLCALLBACKMEMBER(int, pfnReapURB,(PREMOTEUSBDEVICE pDevice, uint32_t u32Millies, void **ppvURB, uint32_t *pu32Len, uint32_t *pu32Err));
79 DECLCALLBACKMEMBER(int, pfnClearHaltedEP,(PREMOTEUSBDEVICE pDevice, uint8_t u8Ep));
80 DECLCALLBACKMEMBER(void, pfnCancelURB,(PREMOTEUSBDEVICE pDevice, PREMOTEUSBQURB pRemoteURB));
81 DECLCALLBACKMEMBER(int, pfnWakeup,(PREMOTEUSBDEVICE pDevice));
82} REMOTEUSBCALLBACK;
83/** Pointer to a remote USB callback table. */
84typedef REMOTEUSBCALLBACK *PREMOTEUSBCALLBACK;
85
86/**
87 * Remote USB interface for querying the remote USB callback table for particular client.
88 * Returned from the *QueryGenericUserObject when passing REMOTEUSBIF_OID as the identifier.
89 */
90typedef struct REMOTEUSBIF
91{
92 /** Opaque user data to pass as the first parameter to the callbacks. */
93 void *pvUser;
94
95 /**
96 * Queries the remote USB interface callback table for a given UUID/client ID pair.
97 *
98 * @returns Pointer to the remote USB callback table or NULL if the client ID and or UUID is invalid.
99 * @param pvUser Opaque user data from this interface.
100 * @param pUuid The device UUID to query the interface for.
101 * @param idClient The client ID to query the interface for.
102 */
103 DECLCALLBACKMEMBER(PREMOTEUSBCALLBACK, pfnQueryRemoteUsbBackend, (void *pvUser, PCRTUUID pUuid, uint32_t idClient));
104} REMOTEUSBIF;
105/** Pointer to a remote USB interface. */
106typedef REMOTEUSBIF *PREMOTEUSBIF;
107
108/** The UUID to identify the remote USB interface. */
109#define REMOTEUSBIF_OID "87012f58-2ad6-4f89-b7b1-92f72c7ea8cc"
110
111
112typedef struct EMULATEDUSBIF
113{
114 /** Opaque user data to pass as the first parameter to the callbacks. */
115 void *pvUser;
116
117 DECLCALLBACKMEMBER(int, pfnQueryEmulatedUsbDataById, (void *pvUser, const char *pszId, void **ppvEmUsbCb, void **ppvEmUsbCbData, void **ppvObject));
118} EMULATEDUSBIF;
119typedef EMULATEDUSBIF *PEMULATEDUSBIF;
120
121#define EMULATEDUSBIF_OID "b7b4e194-ada0-4722-8e4e-1700ed9064f3"
122
123/** @} */
124
125#endif /* !VBOX_INCLUDED_vrdpusb_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