VirtualBox

source: vbox/trunk/src/VBox/Main/include/VMMDev.h@ 76132

最後變更 在這個檔案從76132是 75969,由 vboxsync 提交於 6 年 前

HGCM,GuestProps: Added HGCM service notifications for VM power-on, VM resume, VM suspend, VM reset and VM power-off. Made use of the first two in guest properties to wake up guest programs waiting on any of the host version properties. Also moved inserting sysprep and host version properties to the services as that's a better home than ConsoleImpl/VMMDevInterface in my opinion.

  • 屬性 svn:eol-style 設為 native
  • 屬性 svn:keywords 設為 Author Date Id Revision
檔案大小: 3.2 KB
 
1/* $Id: VMMDev.h 75969 2018-12-05 12:08:09Z vboxsync $ */
2/** @file
3 * VirtualBox Driver interface to VMM device
4 */
5
6/*
7 * Copyright (C) 2006-2017 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.alldomusa.eu.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#ifndef ____H_VMMDEV
19#define ____H_VMMDEV
20
21#include "VirtualBoxBase.h"
22#include <VBox/vmm/pdmdrv.h>
23#include <iprt/asm.h>
24
25class Console;
26
27class VMMDevMouseInterface
28{
29public:
30 virtual PPDMIVMMDEVPORT getVMMDevPort() = 0;
31};
32
33class VMMDev : public VMMDevMouseInterface
34{
35public:
36 VMMDev(Console *console);
37 virtual ~VMMDev();
38 static const PDMDRVREG DrvReg;
39 /** Pointer to the associated VMMDev driver. */
40 struct DRVMAINVMMDEV *mpDrv;
41
42 bool fSharedFolderActive;
43 bool isShFlActive()
44 {
45 return fSharedFolderActive;
46 }
47
48 Console *getParent()
49 {
50 return mParent;
51 }
52
53 int WaitCredentialsJudgement (uint32_t u32Timeout, uint32_t *pu32GuestFlags);
54 int SetCredentialsJudgementResult (uint32_t u32Flags);
55
56 PPDMIVMMDEVPORT getVMMDevPort();
57
58#ifdef VBOX_WITH_HGCM
59 int hgcmLoadService (const char *pszServiceLibrary, const char *pszServiceName);
60 int hgcmHostCall (const char *pszServiceName, uint32_t u32Function, uint32_t cParms, PVBOXHGCMSVCPARM paParms);
61# ifdef VBOX_WITH_CRHGSMI
62 int hgcmHostSvcHandleCreate (const char *pszServiceName, HGCMCVSHANDLE * phSvc);
63 int hgcmHostSvcHandleDestroy (HGCMCVSHANDLE hSvc);
64 int hgcmHostFastCallAsync (HGCMCVSHANDLE hSvc, uint32_t function, PVBOXHGCMSVCPARM pParm, PHGCMHOSTFASTCALLCB pfnCompletion, void *pvCompletion);
65# endif
66 void hgcmShutdown(bool fUvmIsInvalid = false);
67
68 bool hgcmIsActive (void) { return ASMAtomicReadBool(&m_fHGCMActive); }
69#endif /* VBOX_WITH_HGCM */
70
71private:
72#ifdef VBOX_WITH_HGCM
73# ifdef VBOX_WITH_GUEST_PROPS
74 void i_guestPropSetMultiple(void *names, void *values, void *timestamps, void *flags);
75 void i_guestPropSet(const char *pszName, const char *pszValue, const char *pszFlags);
76 int i_guestPropSetGlobalPropertyFlags(uint32_t fFlags);
77 int i_guestPropLoadAndConfigure();
78# endif
79#endif
80 static DECLCALLBACK(void *) drvQueryInterface(PPDMIBASE pInterface, const char *pszIID);
81 static DECLCALLBACK(int) drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uint32_t fFlags);
82 static DECLCALLBACK(void) drvDestruct(PPDMDRVINS pDrvIns);
83 static DECLCALLBACK(void) drvReset(PPDMDRVINS pDrvIns);
84 static DECLCALLBACK(void) drvPowerOn(PPDMDRVINS pDrvIns);
85 static DECLCALLBACK(void) drvPowerOff(PPDMDRVINS pDrvIns);
86 static DECLCALLBACK(void) drvSuspend(PPDMDRVINS pDrvIns);
87 static DECLCALLBACK(void) drvResume(PPDMDRVINS pDrvIns);
88
89 Console * const mParent;
90
91 RTSEMEVENT mCredentialsEvent;
92 uint32_t mu32CredentialsFlags;
93
94#ifdef VBOX_WITH_HGCM
95 bool volatile m_fHGCMActive;
96#endif /* VBOX_WITH_HGCM */
97};
98
99#endif // !____H_VMMDEV
100/* vi: set tabstop=4 shiftwidth=4 expandtab: */
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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