VMMDevState.h revision 3c490ebd05ff572ab592a5d6d1783eb56ecd480a
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/** @file
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * VBox Guest/VMM/host communication:
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * HGCM - Host-Guest Communication Manager header
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/*
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * Copyright (C) 2006-2007 innotek GmbH
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync *
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * available from http://www.virtualbox.org. This file is free software;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * you can redistribute it and/or modify it under the terms of the GNU
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * General Public License as published by the Free Software Foundation,
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * distribution. VirtualBox OSE is distributed in the hope that it will
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync * be useful, but WITHOUT ANY WARRANTY of any kind.
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifndef __VMMDevState_h__
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define __VMMDevState_h__
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <VBox/cdefs.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <VBox/types.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#include <VBox/pdm.h>
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#define TIMESYNC_BACKDOOR
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync/** device structure containing all state information */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsynctypedef struct VMMDevState
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync{
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** The PCI device structure. */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PCIDevice dev;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** hypervisor address space size */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync uint32_t hypervisorSize;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** bit 0: guest capability (1 == wants), bit 1: flag value has changed */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** bit 2: host capability (1 == wants), bit 3: flag value has changed */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync uint32_t mouseCapabilities;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** absolute mouse position in pixels */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync uint32_t mouseXAbs;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync uint32_t mouseYAbs;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** Pointer to device instance. */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PPDMDEVINS pDevIns;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** VMMDev port base interface. */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PDMIBASE Base;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** VMMDev port interface. */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PDMIVMMDEVPORT Port;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef VBOX_HGCM
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** HGCM port interface. */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PDMIHGCMPORT HGCMPort;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** Pointer to base interface of the driver. */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PPDMIBASE pDrvBase;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** VMMDev connector interface */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PPDMIVMMDEVCONNECTOR pDrv;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#ifdef VBOX_HGCM
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** HGCM connector interface */
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync PPDMIHGCMCONNECTOR pHGCMDrv;
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync#endif
deb4998ba50060c48cce222fd18a8eed053918d7vboxsync /** message buffer for backdoor logging. */
char szMsg[512];
/** message buffer index. */
unsigned iMsg;
/** Base port in the assigned I/O space. */
RTIOPORT PortBase;
/** IRQ number assigned to the device */
uint32_t irq;
/** Current host side event flags */
uint32_t u32HostEventFlags;
/** Mask of events guest is interested in. Note that the HGCM events
* are enabled automatically by the VMMDev device when guest issues
* HGCM commands.
*/
uint32_t u32GuestFilterMask;
/** Delayed mask of guest events */
uint32_t u32NewGuestFilterMask;
/** Flag whether u32NewGuestFilterMask is valid */
bool fNewGuestFilterMask;
/** HC pointer to VMMDev RAM area */
VMMDevMemory *pVMMDevRAMHC;
/** GC physical address of VMMDev RAM area */
RTGCPHYS GCPhysVMMDevRAM;
/** Information reported by guest via VMMDevReportGuestInfo generic request.
* Until this information is reported the VMMDev refuses any other requests.
*/
VBoxGuestInfo guestInfo;
/** Information reported by guest via VMMDevReportGuestCapabilities
*/
uint32_t guestCaps;
/** "Additions are Ok" indicator, set to true after processing VMMDevReportGuestInfo,
* if additions version is compatible. This flag is here to avoid repeated comparing
* of the version in guestInfo.
*/
uint32_t fu32AdditionsOk;
/** Video acceleration status set by guest. */
uint32_t u32VideoAccelEnabled;
/** resolution change request */
struct
{
uint32_t xres;
uint32_t yres;
uint32_t bpp;
uint32_t display;
} displayChangeRequest,
lastReadDisplayChangeRequest;
/** credentials for guest logon purposes */
struct
{
char szUserName[VMMDEV_CREDENTIALS_STRLEN];
char szPassword[VMMDEV_CREDENTIALS_STRLEN];
char szDomain[VMMDEV_CREDENTIALS_STRLEN];
bool fAllowInteractiveLogon;
} credentialsLogon;
/** credentials for verification by guest */
struct
{
char szUserName[VMMDEV_CREDENTIALS_STRLEN];
char szPassword[VMMDEV_CREDENTIALS_STRLEN];
char szDomain[VMMDEV_CREDENTIALS_STRLEN];
} credentialsJudge;
/* memory balloon change request */
uint32_t u32MemoryBalloonSize, u32LastMemoryBalloonSize;
/* seamless mode change request */
bool fLastSeamlessEnabled, fSeamlessEnabled;
#ifdef TIMESYNC_BACKDOOR
bool fTimesyncBackdoorLo;
uint64_t hostTime;
#endif
/** Set if GetHostTime should fail.
* Loaded from the GetHostTimeDisabled configuration value. */
bool fGetHostTimeDisabled;
/** Set if backdoor logging should be disabled (output will be ignored then) */
bool fBackdoorLogDisabled;
#ifdef VBOX_HGCM
/** List of pending HGCM requests, used for saving the HGCM state. */
PVBOXHGCMCMD pHGCMCmdList;
/** Critical section to protect the list. */
RTCRITSECT critsectHGCMCmdList;
/** Whether the HGCM events are already automatically enabled. */
uint32_t u32HGCMEnabled;
#endif /* VBOX_HGCM */
/* Shared folders LED */
struct
{
/** The LED. */
PDMLED Led;
/** The LED ports. */
PDMILEDPORTS ILeds;
/** Partner of ILeds. */
HCPTRTYPE(PPDMILEDCONNECTORS) pLedsConnector;
} SharedFolders;
} VMMDevState;
void VMMDevNotifyGuest (VMMDevState *pVMMDevState, uint32_t u32EventMask);
void VMMDevCtlSetGuestFilterMask (VMMDevState *pVMMDevState,
uint32_t u32OrMask,
uint32_t u32NotMask);
#endif /* __VMMDevState_h__ */