VirtualBox

source: vbox/trunk/src/VBox/Main/include/HostPower.h@ 14949

Last change on this file since 14949 was 14949, checked in by vboxsync, 16 years ago

Appended vim modeline to set tabstop and expand tabs (in the way
suggested by our coding guidelines).

File size: 3.1 KB
Line 
1/** @file
2 *
3 * VirtualBox interface to host's power notification service
4 */
5
6/*
7 * Copyright (C) 2006-2008 Sun Microsystems, Inc.
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
18 * Clara, CA 95054 USA or visit http://www.sun.com if you need
19 * additional information or have any questions.
20 */
21
22#ifndef ____H_HOSTPOWER
23#define ____H_HOSTPOWER
24
25#include "VirtualBoxBase.h"
26#include "MachineImpl.h"
27
28#include <vector>
29
30#ifdef RT_OS_DARWIN
31# include <IOKit/pwr_mgt/IOPMLib.h>
32# include <Carbon/Carbon.h>
33#endif /* RT_OS_DARWIN */
34
35class VirtualBox;
36
37typedef enum
38{
39 HostPowerEvent_Suspend,
40 HostPowerEvent_Resume,
41 HostPowerEvent_BatteryLow
42} HostPowerEvent;
43
44class HostPowerService
45{
46public:
47
48 HostPowerService (VirtualBox *aVirtualBox);
49 virtual ~HostPowerService();
50
51 void notify (HostPowerEvent aEvent);
52
53protected:
54
55 ComObjPtr <VirtualBox, ComWeakRef> mVirtualBox;
56
57 std::vector <ComPtr <IConsole> > mConsoles;
58};
59
60# ifdef RT_OS_WINDOWS
61/**
62 * The Windows hosted Power Service.
63 */
64class HostPowerServiceWin : public HostPowerService
65{
66public:
67
68 HostPowerServiceWin(VirtualBox *aVirtualBox);
69 virtual ~HostPowerServiceWin();
70
71private:
72
73 static DECLCALLBACK(int) NotificationThread (RTTHREAD ThreadSelf, void *pInstance);
74 static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
75
76 HWND mHwnd;
77 RTTHREAD mThread;
78};
79# elif defined(RT_OS_DARWIN) /* RT_OS_WINDOWS */
80/**
81 * The Darwin hosted Power Service.
82 */
83class HostPowerServiceDarwin : public HostPowerService
84{
85public:
86
87 HostPowerServiceDarwin (VirtualBox *aVirtualBox);
88 virtual ~HostPowerServiceDarwin();
89
90private:
91
92 static DECLCALLBACK(int) powerChangeNotificationThread (RTTHREAD ThreadSelf, void *pInstance);
93 static void powerChangeNotificationHandler (void *pData, io_service_t service, natural_t messageType, void *pMessageArgument);
94 static OSErr lowPowerEventHandler (const AppleEvent * theAppleEvent, AppleEvent * replyAppleEvent, long refCon);
95
96 /* Private member vars */
97 RTTHREAD mThread; /* Our message thread. */
98
99 io_connect_t mRootPort; /* A reference to the Root Power Domain IOService */
100 IONotificationPortRef mNotifyPort; /* Notification port allocated by IORegisterForSystemPower */
101 io_object_t mNotifierObject; /* Notifier object, used to deregister later */
102 CFRunLoopRef mRunLoop; /* A reference to the local thread run loop */
103};
104# endif /* RT_OS_DARWIN */
105
106#endif /* !____H_HOSTPOWER */
107/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette