340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync/* $Id$ */
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync/** @file
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync * VBoxTrayMsg - Globally registered messages (RPC) to/from VBoxTray.
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync */
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync/*
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * Copyright (C) 2010-2013 Oracle Corporation
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync *
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync * available from http://www.virtualbox.org. This file is free software;
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync * you can redistribute it and/or modify it under the terms of the GNU
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync * General Public License (GPL) as published by the Free Software
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync */
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync#ifndef ___VBOXTRAY_MSG_H
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync#define ___VBOXTRAY_MSG_H
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync
48aeeeb5d1264d6889dc03ea8805381d2172c9b1vboxsync/** The IPC pipe's prefix. Will be followed by the
48aeeeb5d1264d6889dc03ea8805381d2172c9b1vboxsync * username VBoxTray runs under. */
69635e74efb7b4a3c97269b3268d4354cebb36d0vboxsync#define VBOXTRAY_IPC_PIPE_PREFIX "VBoxTrayIPC-"
48aeeeb5d1264d6889dc03ea8805381d2172c9b1vboxsync/** The IPC header's magic. */
48aeeeb5d1264d6889dc03ea8805381d2172c9b1vboxsync#define VBOXTRAY_IPC_HDR_MAGIC 0x19840804
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsyncenum VBOXTRAYIPCMSGTYPE
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync{
4bca1461357775da282a478f5cdd38beb9f574b3vboxsync /** Restarts VBoxTray. */
e6949b26882193292bbad0af38c7bced1d323219vboxsync VBOXTRAYIPCMSGTYPE_RESTART = 10,
4bca1461357775da282a478f5cdd38beb9f574b3vboxsync /** Shows a balloon message in the tray area. */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync VBOXTRAYIPCMSGTYPE_SHOWBALLOONMSG = 100,
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync /** Retrieves the current user's last input
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * time. This will be the user VBoxTray is running
69635e74efb7b4a3c97269b3268d4354cebb36d0vboxsync * under. No actual message for this command
69635e74efb7b4a3c97269b3268d4354cebb36d0vboxsync * required. */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync VBOXTRAYIPCMSGTYPE_USERLASTINPUT = 120
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync};
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync/* VBoxTray's IPC header. */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsynctypedef struct VBOXTRAYIPCHEADER
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync{
48aeeeb5d1264d6889dc03ea8805381d2172c9b1vboxsync /** The header's magic. */
48aeeeb5d1264d6889dc03ea8805381d2172c9b1vboxsync uint32_t uMagic;
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync /** Header version, must be 0 by now. */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync uint32_t uHdrVersion;
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync /** Message type. Specifies a message
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * of VBOXTRAYIPCMSGTYPE. */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync uint32_t uMsgType;
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync /** Message length (in bytes). This must
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * include the overall message length, including
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * (eventual) dynamically allocated areas which
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * are passed into the message structure.
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync uint32_t uMsgLen;
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync} VBOXTRAYIPCHEADER, *PVBOXTRAYIPCHEADER;
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync/**
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * Tells VBoxTray to show a balloon message in Windows'
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * tray area. This may or may not work depending on the
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * system's configuration / set user preference.
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsynctypedef struct VBOXTRAYIPCMSG_SHOWBALLOONMSG
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync{
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync /** Length of message body (in bytes). */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync uint32_t cbMsgContent;
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync /** Length of message title (in bytes). */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync uint32_t cbMsgTitle;
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync /** Message type. */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync uint32_t uType;
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync /** Time to show the message (in ms). */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync uint32_t uShowMS;
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync /** Dynamically allocated stuff.
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync *
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * Note: These must come at the end of the
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * structure to not overwrite any important
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * stuff above.
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync /** Message body. Can be up to 256 chars
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * long. */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync char szMsgContent[1];
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync /** Message title. Can be up to 73 chars
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * long. */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync char szMsgTitle[1];
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync} VBOXTRAYIPCMSG_SHOWBALLOONMSG, *PVBOXTRAYIPCMSG_SHOWBALLOONMSG;
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync/**
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync * Response telling the last input of the current user.
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync */
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsynctypedef struct VBOXTRAYIPCRES_USERLASTINPUT
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync{
1646e365c3a6d92c4a6f32829bb2ba7114555735vboxsync /** Last occurred user input event (in seconds). */
1646e365c3a6d92c4a6f32829bb2ba7114555735vboxsync uint32_t uLastInput;
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync} VBOXTRAYIPCRES_USERLASTINPUT, *PVBOXTRAYIPCRES_USERLASTINPUT;
6d01ab3ab862974eb7aaa1f685364f44c7d2282bvboxsync
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync#endif /* !___VBOXTRAY_MSG_H */
340134cc37fb7a9b4498a2b13df2fa340a1824c0vboxsync