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