VBoxClipboardSvc.h revision 35396ee506ef68dd1c161f1ef2c3c0b68a146ff2
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync/** @file
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * Shared Clipboard:
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * Common header for host service and guest clients.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync/*
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * Copyright (C) 2006-2007 Sun Microsystems, Inc.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync *
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * available from http://www.virtualbox.org. This file is free software;
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * you can redistribute it and/or modify it under the terms of the GNU
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * General Public License (GPL) as published by the Free Software
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync *
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * The contents of this file may alternatively be used under the terms
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * of the Common Development and Distribution License Version 1.0
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * VirtualBox OSE distribution, in which case the provisions of the
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * CDDL are applicable instead of those of the GPL.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync *
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * You may elect to license modified versions of this file under the
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * terms and conditions of either the GPL or the CDDL or both.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync *
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * additional information or have any questions.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#ifndef ___VBox_HostService_VBoxClipboardSvc_h
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define ___VBox_HostService_VBoxClipboardSvc_h
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#include <VBox/types.h>
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#include <VBox/VMMDev.h>
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#include <VBox/VBoxGuest2.h>
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#include <VBox/hgcmsvc.h>
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync/*
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * The mode of operations.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define VBOX_SHARED_CLIPBOARD_MODE_OFF 0
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define VBOX_SHARED_CLIPBOARD_MODE_HOST_TO_GUEST 1
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define VBOX_SHARED_CLIPBOARD_MODE_GUEST_TO_HOST 2
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define VBOX_SHARED_CLIPBOARD_MODE_BIDIRECTIONAL 3
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync/*
694eb5fb2b25736d37902333e059a149f78c563cvboxsync * Supported data formats. Bit mask.
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define VBOX_SHARED_CLIPBOARD_FMT_UNICODETEXT 0x01
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define VBOX_SHARED_CLIPBOARD_FMT_BITMAP 0x02
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define VBOX_SHARED_CLIPBOARD_FMT_HTML 0x04
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
694eb5fb2b25736d37902333e059a149f78c563cvboxsync/*
694eb5fb2b25736d37902333e059a149f78c563cvboxsync * The service functions which are callable by host.
694eb5fb2b25736d37902333e059a149f78c563cvboxsync */
694eb5fb2b25736d37902333e059a149f78c563cvboxsync#define VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE 1
694eb5fb2b25736d37902333e059a149f78c563cvboxsync
694eb5fb2b25736d37902333e059a149f78c563cvboxsync/*
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * The service functions which are called by guest.
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync */
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync/* Call host and wait blocking for an host event VBOX_SHARED_CLIPBOARD_HOST_MSG_* */
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync#define VBOX_SHARED_CLIPBOARD_FN_GET_HOST_MSG 1
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync/* Send list of available formats to host. */
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync#define VBOX_SHARED_CLIPBOARD_FN_FORMATS 2
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync/* Obtain data in specified format from host. */
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync#define VBOX_SHARED_CLIPBOARD_FN_READ_DATA 3
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync/* Send data in requested format to host. */
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync#define VBOX_SHARED_CLIPBOARD_FN_WRITE_DATA 4
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync/*
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync * The host messages for the guest.
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync */
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync#define VBOX_SHARED_CLIPBOARD_HOST_MSG_QUIT 1
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync#define VBOX_SHARED_CLIPBOARD_HOST_MSG_READ_DATA 2
4871617acc3a7a0e0e51ac2eeaa6c8e96720b012vboxsync#define VBOX_SHARED_CLIPBOARD_HOST_MSG_FORMATS 3
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync/*
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync * HGCM parameter structures.
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#pragma pack (1)
3bc264992af3416ecba168e6ffae1a334fe79088vboxsynctypedef struct _VBoxClipboardGetHostMsg
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync{
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuestHGCMCallInfo hdr;
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync /* VBOX_SHARED_CLIPBOARD_HOST_MSG_* */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync HGCMFunctionParameter msg; /* OUT uint32_t */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync /* VBOX_SHARED_CLIPBOARD_FMT_*, depends on the 'msg'. */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync HGCMFunctionParameter formats; /* OUT uint32_t */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync} VBoxClipboardGetHostMsg;
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define VBOX_SHARED_CLIPBOARD_CPARMS_GET_HOST_MSG 2
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsynctypedef struct _VBoxClipboardFormats
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync{
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuestHGCMCallInfo hdr;
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync /* VBOX_SHARED_CLIPBOARD_FMT_* */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync HGCMFunctionParameter formats; /* OUT uint32_t */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync} VBoxClipboardFormats;
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define VBOX_SHARED_CLIPBOARD_CPARMS_FORMATS 1
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsynctypedef struct _VBoxClipboardReadData
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync{
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync VBoxGuestHGCMCallInfo hdr;
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync /* Requested format. */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync HGCMFunctionParameter format; /* IN uint32_t */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync /* The data buffer. */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync HGCMFunctionParameter ptr; /* IN linear pointer. */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync /* Size of returned data, if > ptr->cb, then no data was
694eb5fb2b25736d37902333e059a149f78c563cvboxsync * actually transferred and the guest must repeat the call.
694eb5fb2b25736d37902333e059a149f78c563cvboxsync */
694eb5fb2b25736d37902333e059a149f78c563cvboxsync HGCMFunctionParameter size; /* OUT uint32_t */
694eb5fb2b25736d37902333e059a149f78c563cvboxsync
694eb5fb2b25736d37902333e059a149f78c563cvboxsync} VBoxClipboardReadData;
694eb5fb2b25736d37902333e059a149f78c563cvboxsync
694eb5fb2b25736d37902333e059a149f78c563cvboxsync#define VBOX_SHARED_CLIPBOARD_CPARMS_READ_DATA 3
694eb5fb2b25736d37902333e059a149f78c563cvboxsync
694eb5fb2b25736d37902333e059a149f78c563cvboxsynctypedef struct _VBoxClipboardWriteData
694eb5fb2b25736d37902333e059a149f78c563cvboxsync{
694eb5fb2b25736d37902333e059a149f78c563cvboxsync VBoxGuestHGCMCallInfo hdr;
694eb5fb2b25736d37902333e059a149f78c563cvboxsync
694eb5fb2b25736d37902333e059a149f78c563cvboxsync /* Returned format as requested in the VBOX_SHARED_CLIPBOARD_HOST_MSG_READ_DATA message. */
694eb5fb2b25736d37902333e059a149f78c563cvboxsync HGCMFunctionParameter format; /* IN uint32_t */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync /* Data. */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync HGCMFunctionParameter ptr; /* IN linear pointer. */
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync} VBoxClipboardWriteData;
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#define VBOX_SHARED_CLIPBOARD_CPARMS_WRITE_DATA 2
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#pragma pack ()
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync#endif
3bc264992af3416ecba168e6ffae1a334fe79088vboxsync