VirtualBox

source: vbox/trunk/src/VBox/ExtPacks/VNC/VBoxVNCMain.cpp@ 68828

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

ExtPack: Split up main module of extension pack, have a mandatory one for VBoxSVC and an optional one for the VM process. This finally eliminates the need to drag VBoxVMM into VBoxSVC on some platforms. Many other small cleanups, including reliably calling the unload hook from within a VM process, copy/paste with forgotten adjustments (e.g. extpacks still talking about skeleton) and spelling fixes.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.6 KB
Line 
1/* $Id: VBoxVNCMain.cpp 68828 2017-09-22 14:15:57Z vboxsync $ */
2/** @file
3 * VNC main module.
4 */
5
6/*
7 * Copyright (C) 2010-2017 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18
19/*********************************************************************************************************************************
20* Header Files *
21*********************************************************************************************************************************/
22#include <VBox/ExtPack/ExtPack.h>
23
24#include <VBox/err.h>
25#include <VBox/version.h>
26#include <iprt/string.h>
27#include <iprt/param.h>
28#include <iprt/path.h>
29
30
31/*********************************************************************************************************************************
32* Global Variables *
33*********************************************************************************************************************************/
34/** Pointer to the extension pack helpers. */
35static PCVBOXEXTPACKHLP g_pHlp;
36
37
38// /**
39// * @interface_method_impl{VBOXEXTPACKREG,pfnInstalled}
40// */
41// static DECLCALLBACK(void) vboxVNCExtPack_Installed(PCVBOXEXTPACKREG pThis, VBOXEXTPACK_IF_CS(IVirtualBox) *pVirtualBox, PRTERRINFO pErrInfo);
42//
43// /**
44// * @interface_method_impl{VBOXEXTPACKREG,pfnUninstall}
45// */
46// static DECLCALLBACK(int) vboxVNCExtPack_Uninstall(PCVBOXEXTPACKREG pThis, VBOXEXTPACK_IF_CS(IVirtualBox) *pVirtualBox);
47//
48// /**
49// * @interface_method_impl{VBOXEXTPACKREG,pfnVirtualBoxReady}
50// */
51// static DECLCALLBACK(void) vboxVNCExtPack_VirtualBoxReady(PCVBOXEXTPACKREG pThis, VBOXEXTPACK_IF_CS(IVirtualBox) *pVirtualBox);
52//
53// /**
54// * @interface_method_impl{VBOXEXTPACKREG,pfnUnload}
55// */
56// static DECLCALLBACK(void) vboxVNCExtPack_Unload(PCVBOXEXTPACKREG pThis);
57//
58// /**
59// * @interface_method_impl{VBOXEXTPACKREG,pfnVMCreated}
60// */
61// static DECLCALLBACK(int) vboxVNCExtPack_VMCreated(PCVBOXEXTPACKREG pThis, VBOXEXTPACK_IF_CS(IVirtualBox) *pVirtualBox, VBOXEXTPACK_IF_CS(IMachine) *pMachine);
62//
63// /**
64// * @interface_method_impl{VBOXEXTPACKREG,pfnQueryObject}
65// */
66// static DECLCALLBACK(void) vboxVNCExtPack_QueryObject(PCVBOXEXTPACKREG pThis, PCRTUUID pObjectId);
67
68
69static const VBOXEXTPACKREG g_vboxVNCExtPackReg =
70{
71 VBOXEXTPACKREG_VERSION,
72 /* .uVBoxFullVersion = */ VBOX_FULL_VERSION,
73 /* .pfnInstalled = */ NULL,
74 /* .pfnUninstall = */ NULL,
75 /* .pfnVirtualBoxReady =*/ NULL,
76 /* .pfnUnload = */ NULL,
77 /* .pfnVMCreated = */ NULL,
78 /* .pfnQueryObject = */ NULL,
79 /* .pfnReserved1 = */ NULL,
80 /* .pfnReserved2 = */ NULL,
81 /* .pfnReserved3 = */ NULL,
82 /* .pfnReserved4 = */ NULL,
83 /* .pfnReserved5 = */ NULL,
84 /* .pfnReserved6 = */ NULL,
85 /* .u32Reserved7 = */ 0,
86 VBOXEXTPACKREG_VERSION
87};
88
89
90/** @callback_method_impl{FNVBOXEXTPACKREGISTER} */
91extern "C" DECLEXPORT(int) VBoxExtPackRegister(PCVBOXEXTPACKHLP pHlp, PCVBOXEXTPACKREG *ppReg, PRTERRINFO pErrInfo)
92{
93 /*
94 * Check the VirtualBox version.
95 */
96 if (!VBOXEXTPACK_IS_VER_COMPAT(pHlp->u32Version, VBOXEXTPACKHLP_VERSION))
97 return RTErrInfoSetF(pErrInfo, VERR_VERSION_MISMATCH,
98 "Helper version mismatch - expected %#x got %#x",
99 VBOXEXTPACKHLP_VERSION, pHlp->u32Version);
100 if ( VBOX_FULL_VERSION_GET_MAJOR(pHlp->uVBoxFullVersion) != VBOX_VERSION_MAJOR
101 || VBOX_FULL_VERSION_GET_MINOR(pHlp->uVBoxFullVersion) != VBOX_VERSION_MINOR)
102 return RTErrInfoSetF(pErrInfo, VERR_VERSION_MISMATCH,
103 "VirtualBox version mismatch - expected %u.%u got %u.%u",
104 VBOX_VERSION_MAJOR, VBOX_VERSION_MINOR,
105 VBOX_FULL_VERSION_GET_MAJOR(pHlp->uVBoxFullVersion),
106 VBOX_FULL_VERSION_GET_MINOR(pHlp->uVBoxFullVersion));
107
108 /*
109 * We're good, save input and return the registration structure.
110 */
111 g_pHlp = pHlp;
112 *ppReg = &g_vboxVNCExtPackReg;
113
114 return VINF_SUCCESS;
115}
116
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