DragAndDropSvc.h revision a3011b448b38c39a7222f2f1eb40c8349023f650
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * Drag and Drop service - Common header for host service and guest clients.
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * Copyright (C) 2011-2014 Oracle Corporation
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * available from http://www.virtualbox.org. This file is free software;
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * you can redistribute it and/or modify it under the terms of the GNU
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * General Public License (GPL) as published by the Free Software
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * The contents of this file may alternatively be used under the terms
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * of the Common Development and Distribution License Version 1.0
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * VirtualBox OSE distribution, in which case the provisions of the
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * CDDL are applicable instead of those of the GPL.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * You may elect to license modified versions of this file under the
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * terms and conditions of either the GPL or the CDDL or both.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * The mode of operations.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync#define hasDnDCopyAction(a) ((a) && DND_COPY_ACTION)
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync#define hasDnDMoveAction(a) ((a) && DND_MOVE_ACTION)
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync#define hasDnDLinkAction(a) ((a) && DND_LINK_ACTION)
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync#define isDnDIgnoreAction(a) ((a) == DND_IGNORE_ACTION)
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync/* Everything defined in this file lives in this namespace. */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync/******************************************************************************
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync* Typedefs, constants and inlines *
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync******************************************************************************/
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * The service functions which are callable by host.
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * Note: When adding new functions to this table, make sure that the actual ID
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * does *not* overlap with the eGuestFn enumeration below!
99f33ab590a3a65e0cd082dd8d67779efb9cc6c9vboxsync /** Gets the actual MIME data, based on
99f33ab590a3a65e0cd082dd8d67779efb9cc6c9vboxsync * the format(s) specified by HOST_DND_HG_EVT_ENTER. */
99f33ab590a3a65e0cd082dd8d67779efb9cc6c9vboxsync /** Sent when the actual buffer for HOST_DND_HG_SND_DATA
99f33ab590a3a65e0cd082dd8d67779efb9cc6c9vboxsync * was too small. */
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync /** The host asks the guest whether a DnD operation
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * is in progress when the mouse leaves the guest window. */
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync /** The host informs the guest that a DnD drop operation
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * has been started and that the host wants the data in
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * a specific mime-type. */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * The service functions which are called by guest.
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * Note: When adding new functions to this table, make sure that the actual ID
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * does *not* overlap with the eGuestFn enumeration above!
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * Guest waits for a new message the host wants to process
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * on the guest side. This can be a blocking call.
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * The guests acknowledges that it currently has a drag'n drop
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * operation in progress on the guest, which eventually could be
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync * dragged over to the host.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * The possible states for the progress operations.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * Host events
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HG Action event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_HG_EVT_ENTER
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_HG_EVT_MOVE
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_HG_EVT_DROPPED
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync HGCMFunctionParameter uScreenId; /* OUT uint32_t */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync HGCMFunctionParameter uDefAction; /* OUT uint32_t */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync HGCMFunctionParameter uAllActions; /* OUT uint32_t */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HG Leave event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_HG_EVT_LEAVE
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HG Cancel return event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_HG_EVT_CANCEL
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HG Send Data event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_HG_SND_DATA
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync HGCMFunctionParameter uScreenId; /* OUT uint32_t */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HG Send More Data event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_HG_SND_MORE_DATA
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HG Directory event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_HG_SND_DIR
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HG File event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_HG_SND_FILE
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GH Request Pending event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_GH_REQ_PENDING
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync HGCMFunctionParameter uScreenId; /* OUT uint32_t */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GH Dropped event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HOST_DND_GH_EVT_DROPPED
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * Guest events
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * The returned command the host wants to
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * run on the guest.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GUEST_DND_GET_NEXT_HOST_MSG
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync /** Number of parameters the message needs. */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync HGCMFunctionParameter num_parms; /* OUT uint32_t */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HG Acknowledge Operation event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GUEST_DND_HG_ACK_OP
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * HG request for data event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GUEST_DND_HG_REQ_DATA
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GH Acknowledge Pending event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GUEST_DND_GH_ACK_PENDING
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync HGCMFunctionParameter uDefAction; /* OUT uint32_t */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync HGCMFunctionParameter uAllActions; /* OUT uint32_t */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GH Send Data event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GUEST_DND_GH_SND_DATA
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GH Cancel Data event.
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * GUEST_DND_GH_EVT_CANCEL
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync * Callback handler
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync /** Magic number to identify the structure. */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync /** Context ID to identify callback data. */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync /** Callback data header. */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsynctypedef VBOXDNDCBHGACKOPDATA *PVBOXDNDCBHGACKOPDATA;
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync /** Callback data header. */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsynctypedef VBOXDNDCBHGREQDATADATA *PVBOXDNDCBHGREQDATADATA;
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync /** Callback data header. */
99f33ab590a3a65e0cd082dd8d67779efb9cc6c9vboxsynctypedef VBOXDNDCBHGEVTPROGRESSDATA *PVBOXDNDCBHGEVTPROGRESSDATA;
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync /** Callback data header. */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsynctypedef VBOXDNDCBGHACKPENDINGDATA *PVBOXDNDCBGHACKPENDINGDATA;
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync /** Callback data header. */
a3011b448b38c39a7222f2f1eb40c8349023f650vboxsync uint32_t cbAllSize; /** @todo Why is this transmitted every time? */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsynctypedef VBOXDNDCBSNDDATADATA *PVBOXDNDCBSNDDATADATA;
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync /** Callback data header. */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsynctypedef VBOXDNDCBEVTERRORDATA *PVBOXDNDCBEVTERRORDATA;
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync} /* namespace DragAndDropSvc */
a1a825a2fcd6b32bd63d40a0705ef68fcbf1ed16vboxsync#endif /* !___VBox_HostService_DragAndDropSvc_h */