VBoxVideoGuest.h revision a0cebf7fbe7defe88df7dcb64e51af63480b7ab0
cf25f919d659bf00f73e1551230cd6165961061dvboxsync/** @file
cf25f919d659bf00f73e1551230cd6165961061dvboxsync *
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * VBox Host Guest Shared Memory Interface (HGSMI).
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * OS-independent guest structures.
cf25f919d659bf00f73e1551230cd6165961061dvboxsync */
cf25f919d659bf00f73e1551230cd6165961061dvboxsync
cf25f919d659bf00f73e1551230cd6165961061dvboxsync/*
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * Copyright (C) 2006-2008 Oracle Corporation
cf25f919d659bf00f73e1551230cd6165961061dvboxsync *
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * available from http://www.virtualbox.org. This file is free software;
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * General Public License (GPL) as published by the Free Software
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
cf25f919d659bf00f73e1551230cd6165961061dvboxsync *
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * The contents of this file may alternatively be used under the terms
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * of the Common Development and Distribution License Version 1.0
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * VirtualBox OSE distribution, in which case the provisions of the
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * CDDL are applicable instead of those of the GPL.
cf25f919d659bf00f73e1551230cd6165961061dvboxsync *
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * You may elect to license modified versions of this file under the
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * terms and conditions of either the GPL or the CDDL or both.
cf25f919d659bf00f73e1551230cd6165961061dvboxsync */
cf25f919d659bf00f73e1551230cd6165961061dvboxsync
cf25f919d659bf00f73e1551230cd6165961061dvboxsync
cf25f919d659bf00f73e1551230cd6165961061dvboxsync#ifndef __HGSMI_GUEST_h__
cf25f919d659bf00f73e1551230cd6165961061dvboxsync#define __HGSMI_GUEST_h__
cf25f919d659bf00f73e1551230cd6165961061dvboxsync
cf25f919d659bf00f73e1551230cd6165961061dvboxsync#include <VBox/HGSMI/HGSMI.h>
cf25f919d659bf00f73e1551230cd6165961061dvboxsync#include <VBox/HGSMI/HGSMIChSetup.h>
cf25f919d659bf00f73e1551230cd6165961061dvboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#ifdef VBOX_XPDM_MINIPORT
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRT_C_DECLS_BEGIN
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync# include "miniport.h"
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync# include "ntddvdeo.h"
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync# include <Video.h>
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRT_C_DECLS_END
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#else
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync# include <iprt/asm-amd64-x86.h>
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#endif
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRT_C_DECLS_BEGIN
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
cf25f919d659bf00f73e1551230cd6165961061dvboxsync/**
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * Structure grouping the context needed for submitting commands to the host
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * via HGSMI
cf25f919d659bf00f73e1551230cd6165961061dvboxsync */
cf25f919d659bf00f73e1551230cd6165961061dvboxsynctypedef struct _HGSMIGUESTCOMMANDCONTEXT
cf25f919d659bf00f73e1551230cd6165961061dvboxsync{
cf25f919d659bf00f73e1551230cd6165961061dvboxsync /** Information about the memory heap located in VRAM from which data
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * structures to be sent to the host are allocated. */
cf25f919d659bf00f73e1551230cd6165961061dvboxsync HGSMIHEAP heapCtx;
cf25f919d659bf00f73e1551230cd6165961061dvboxsync /** The I/O port used for submitting commands to the host by writing their
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * offsets into the heap. */
cf25f919d659bf00f73e1551230cd6165961061dvboxsync RTIOPORT port;
cf25f919d659bf00f73e1551230cd6165961061dvboxsync} HGSMIGUESTCOMMANDCONTEXT, *PHGSMIGUESTCOMMANDCONTEXT;
cf25f919d659bf00f73e1551230cd6165961061dvboxsync
cf25f919d659bf00f73e1551230cd6165961061dvboxsync
cf25f919d659bf00f73e1551230cd6165961061dvboxsync/**
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * Structure grouping the context needed for receiving commands from the host
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * via HGSMI
cf25f919d659bf00f73e1551230cd6165961061dvboxsync */
cf25f919d659bf00f73e1551230cd6165961061dvboxsynctypedef struct _HGSMIHOSTCOMMANDCONTEXT
cf25f919d659bf00f73e1551230cd6165961061dvboxsync{
cf25f919d659bf00f73e1551230cd6165961061dvboxsync /** Information about the memory area located in VRAM in which the host
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * places data structures to be read by the guest. */
cf25f919d659bf00f73e1551230cd6165961061dvboxsync HGSMIAREA areaCtx;
cf25f919d659bf00f73e1551230cd6165961061dvboxsync /** Convenience structure used for matching host commands to handlers. */
cf25f919d659bf00f73e1551230cd6165961061dvboxsync /** @todo handlers are registered individually in code rather than just
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * passing a static structure in order to gain extra flexibility. There is
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * currently no expected usage case for this though. Is the additional
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * complexity really justified? */
cf25f919d659bf00f73e1551230cd6165961061dvboxsync HGSMICHANNELINFO channels;
cf25f919d659bf00f73e1551230cd6165961061dvboxsync /** Flag to indicate that one thread is currently processing the command
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * queue. */
cf25f919d659bf00f73e1551230cd6165961061dvboxsync volatile bool fHostCmdProcessing;
cf25f919d659bf00f73e1551230cd6165961061dvboxsync /* Pointer to the VRAM location where the HGSMI host flags are kept. */
cf25f919d659bf00f73e1551230cd6165961061dvboxsync volatile HGSMIHOSTFLAGS *pfHostFlags;
cf25f919d659bf00f73e1551230cd6165961061dvboxsync /** The I/O port used for receiving commands from the host as offsets into
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * the memory area and sending back confirmations (command completion,
cf25f919d659bf00f73e1551230cd6165961061dvboxsync * IRQ acknowlegement). */
cf25f919d659bf00f73e1551230cd6165961061dvboxsync RTIOPORT port;
cf25f919d659bf00f73e1551230cd6165961061dvboxsync} HGSMIHOSTCOMMANDCONTEXT, *PHGSMIHOSTCOMMANDCONTEXT;
cf25f919d659bf00f73e1551230cd6165961061dvboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** @name Helper functions
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync * @{ */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** Write an 8-bit value to an I/O port. */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncDECLINLINE(void) VBoxVideoCmnPortWriteUchar(RTIOPORT Port, uint8_t Value)
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync{
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#ifdef VBOX_XPDM_MINIPORT
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync VideoPortWritePortUchar((PUCHAR)Port, Value);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#else /** @todo make these explicit */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync ASMOutU8(Port, Value);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#endif
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync}
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** Write a 16-bit value to an I/O port. */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncDECLINLINE(void) VBoxVideoCmnPortWriteUshort(RTIOPORT Port, uint16_t Value)
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync{
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#ifdef VBOX_XPDM_MINIPORT
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync VideoPortWritePortUshort((PUSHORT)Port,Value);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#else
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync ASMOutU16(Port, Value);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#endif
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync}
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** Write a 32-bit value to an I/O port. */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncDECLINLINE(void) VBoxVideoCmnPortWriteUlong(RTIOPORT Port, uint32_t Value)
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync{
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#ifdef VBOX_XPDM_MINIPORT
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync VideoPortWritePortUlong((PULONG)Port,Value);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#else
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync ASMOutU32(Port, Value);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#endif
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync}
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** Read an 8-bit value from an I/O port. */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncDECLINLINE(uint8_t) VBoxVideoCmnPortReadUchar(RTIOPORT Port)
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync{
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#ifdef VBOX_XPDM_MINIPORT
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync return VideoPortReadPortUchar((PUCHAR)Port);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#else
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync return ASMInU8(Port);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#endif
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync}
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** Read a 16-bit value from an I/O port. */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncDECLINLINE(uint16_t) VBoxVideoCmnPortReadUshort(RTIOPORT Port)
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync{
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#ifdef VBOX_XPDM_MINIPORT
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync return VideoPortReadPortUshort((PUSHORT)Port);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#else
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync return ASMInU16(Port);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#endif
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync}
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** Read a 32-bit value from an I/O port. */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncDECLINLINE(uint32_t) VBoxVideoCmnPortReadUlong(RTIOPORT Port)
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync{
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#ifdef VBOX_XPDM_MINIPORT
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync return VideoPortReadPortUlong((PULONG)Port);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#else
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync return ASMInU32(Port);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync#endif
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync}
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** @} */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** @name Base HGSMI APIs
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync * @{ */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** Acknowlege an IRQ. */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncDECLINLINE(void) VBoxHGSMIClearIrq(PHGSMIHOSTCOMMANDCONTEXT pCtx)
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync{
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync VBoxVideoCmnPortWriteUlong(pCtx->port, HGSMIOFFSET_VOID);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync}
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(void) VBoxHGSMIHostCmdComplete(PHGSMIHOSTCOMMANDCONTEXT pCtx,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync void *pvMem);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(void) VBoxHGSMIProcessHostQueue(PHGSMIHOSTCOMMANDCONTEXT pCtx);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(bool) VBoxHGSMIIsSupported(void);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(void *) VBoxHGSMIBufferAlloc(PHGSMIGUESTCOMMANDCONTEXT pCtx,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync HGSMISIZE cbData,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint8_t u8Ch,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint16_t u16Op);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(void) VBoxHGSMIBufferFree(PHGSMIGUESTCOMMANDCONTEXT pCtx,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync void *pvBuffer);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(int) VBoxHGSMIBufferSubmit(PHGSMIGUESTCOMMANDCONTEXT pCtx,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync void *pvBuffer);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsynctypedef struct VBVAINFOVIEW *PVBVAINFOVIEW;
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/**
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync * Callback funtion called from @a VBoxHGSMISendViewInfo to initialise
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync * the @a VBVAINFOVIEW structure for each screen.
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync *
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync * @returns iprt status code
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync * @param pvData context data for the callback, passed to @a
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync * VBoxHGSMISendViewInfo along with the callback
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync * @param pInfo array of @a VBVAINFOVIEW structures to be filled in
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync * @todo explicitly pass the array size
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsynctypedef DECLCALLBACK(int) FNHGSMIFILLVIEWINFO (void *pvData,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync PVBVAINFOVIEW pInfo);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** Pointer to a FNHGSMIFILLVIEWINFO callback */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsynctypedef FNHGSMIFILLVIEWINFO *PFNHGSMIFILLVIEWINFO;
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(int) VBoxHGSMISendViewInfo(PHGSMIGUESTCOMMANDCONTEXT pCtx,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t u32Count,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync PFNHGSMIFILLVIEWINFO pfnFill,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync void *pvData);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(void) VBoxHGSMIGetBaseMappingInfo(uint32_t cbVRAM,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t *poffVRAMBaseMapping,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t *pcbMapping,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t *poffGuestHeapMemory,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t *pcbGuestHeapMemory,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t *poffHostFlags);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** @todo we should provide a cleanup function too as part of the API */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(int) VBoxHGSMISetupGuestContext(PHGSMIGUESTCOMMANDCONTEXT pCtx,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync void *pvGuestHeapMemory,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t cbGuestHeapMemory,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t offVRAMGuestHeapMemory);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(void) VBoxHGSMIGetHostAreaMapping(PHGSMIGUESTCOMMANDCONTEXT pCtx,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t cbVRAM,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t offVRAMBaseMapping,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t *poffVRAMHostArea,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t *pcbHostArea);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(void) VBoxHGSMISetupHostContext(PHGSMIHOSTCOMMANDCONTEXT pCtx,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync void *pvBaseMapping,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t offHostFlags,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync void *pvHostAreaMapping,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t offVRAMHostArea,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t cbHostArea);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(int) VBoxHGSMISendHostCtxInfo(PHGSMIGUESTCOMMANDCONTEXT pCtx,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync HGSMIOFFSET offVRAMFlagsLocation,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t fCaps,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t offVRAMHostArea,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t cbHostArea);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(uint32_t) VBoxHGSMIGetMonitorCount(PHGSMIGUESTCOMMANDCONTEXT pCtx);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRTDECL(bool) VBoxHGSMIUpdatePointerShape(PHGSMIGUESTCOMMANDCONTEXT pCtx,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t fFlags,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t cHotX,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t cHotY,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t cWidth,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t cHeight,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint8_t *pPixels,
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync uint32_t cbLength);
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync/** @} */
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsync
a0cebf7fbe7defe88df7dcb64e51af63480b7ab0vboxsyncRT_C_DECLS_END
cf25f919d659bf00f73e1551230cd6165961061dvboxsync
cf25f919d659bf00f73e1551230cd6165961061dvboxsync#endif /* __HGSMI_GUEST_h__*/