// -------------------------------------------------------------------------- // Module Name: PowerButton.h // // Copyright (c) 2000, Microsoft Corporation // // Header file that declares the class that implements the ACPI power button // functionality. // // History: 2000-04-17 vtan created // -------------------------------------------------------------------------- #ifndef _PowerButton_ #define _PowerButton_ #include "Thread.h" #include "TurnOffDialog.h" // -------------------------------------------------------------------------- // CPowerButton // // Purpose: A class to handle the power button being pressed. This is // implemented as a thread to allow the desktop to be changed so // interaction with the user is possible. // // History: 2000-04-18 vtan created // -------------------------------------------------------------------------- class CPowerButton : public CThread { private: CPowerButton (void); const CPowerButton& operator = (const CPowerButton& assignObject); public: CPowerButton (void *pWlxContext, HINSTANCE hDllInstance); virtual ~CPowerButton (void); static bool IsValidExecutionCode (DWORD dwGinaCode); protected: virtual DWORD Entry (void); private: DWORD ShowDialog (void); static INT_PTR CALLBACK DialogProc (HWND hwndDialog, UINT uMsg, WPARAM wParam, LPARAM lParam); INT_PTR Handle_WM_READY (HWND hwndDialog); private: void* _pWlxContext; const HINSTANCE _hDllInstance; HANDLE _hToken; CTurnOffDialog* _pTurnOffDialog; bool _fCleanCompletion; }; // -------------------------------------------------------------------------- // CPowerButtonExecution // // Purpose: A class to execute the power button action in a separate // thread so the SASWndProc thread is not blocked. // // History: 2000-04-18 vtan created // -------------------------------------------------------------------------- class CPowerButtonExecution : public CThread { private: CPowerButtonExecution (void); CPowerButtonExecution (const CPowerButtonExecution& copyObject); const CPowerButtonExecution& operator = (const CPowerButtonExecution& assignObject); public: CPowerButtonExecution (DWORD dwShutdownRequest); ~CPowerButtonExecution (void); protected: virtual DWORD Entry (void); private: const DWORD _dwShutdownRequest; HANDLE _hToken; }; #endif /* _PowerButton_ */