windows-nt/Source/XPSP1/NT/shell/ext/gina/powerbutton.h
2020-09-26 16:20:57 +08:00

80 lines
3.1 KiB
C++

// --------------------------------------------------------------------------
// 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_ */