Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

80 lines
3.7 KiB

// --------------------------------------------------------------------------
// Module Name: ThemeServer.h
//
// Copyright (c) 2000, Microsoft Corporation
//
// Functions that implement server functionality.
//
// History: 2000-11-11 vtan created
// --------------------------------------------------------------------------
#ifndef _ThemeServer_
#define _ThemeServer_
// --------------------------------------------------------------------------
// CThemeServer
//
// Purpose: Class to implement server related functions. Functions
// declared in this class execute on the server side of themes.
//
// This means they are restricted in what functions they can and
// cannot call on the client's behalf. Any win32k functions that
// are per instance of win32k cannot be called.
//
// History: 2000-11-11 vtan created
// --------------------------------------------------------------------------
class CThemeServer
{
private:
enum
{
FunctionNothing = 0,
FunctionRegisterUserApiHook,
FunctionUnregisterUserApiHook,
FunctionClearStockObjects
};
private:
CThemeServer (void);
public:
CThemeServer (HANDLE hProcessRegisterHook, DWORD dwServerChangeNumber, void *pfnRegister, void *pfnUnregister, void *pfnClearStockObjects, DWORD dwStackSizeReserve, DWORD dwStackSizeCommit);
~CThemeServer (void);
HRESULT ThemeHooksOn (void);
HRESULT ThemeHooksOff (void);
bool AreThemeHooksActive (void);
int GetCurrentChangeNumber (void);
int GetNewChangeNumber (void);
HRESULT SetGlobalTheme (HANDLE hSection);
HRESULT GetGlobalTheme (HANDLE *phSection);
HRESULT LoadTheme (HANDLE hSection,
HANDLE *phSection, LPCWSTR pszName, LPCWSTR pszColor, LPCWSTR pszSize,
OPTIONAL DWORD dwFlags = 0 /*LTF_xxx*/);
HRESULT InjectStockObjectCleanupThread (HANDLE hSection);
static bool IsSystemProcessContext (void);
static DWORD ThemeHooksInstall (void);
static DWORD ThemeHooksRemove (void);
static DWORD ClearStockObjects (HANDLE hSection);
private:
void LockAcquire (void);
void LockRelease (void);
HRESULT InjectClientSessionThread (HANDLE hProcess, int iIndexFunction, void *pvParam,
OUT OPTIONAL BOOL* pfThreadCreated = NULL);
private:
HANDLE _hProcessRegisterHook;
DWORD _dwServerChangeNumber;
void* _pfnRegister;
void* _pfnUnregister;
void* _pfnClearStockObjects;
DWORD _dwStackSizeReserve;
DWORD _dwStackSizeCommit;
DWORD _dwSessionID;
bool _fHostHooksSet;
HANDLE _hSectionGlobalTheme;
DWORD _dwClientChangeNumber;
CRITICAL_SECTION _lock;
};
#endif /* _ThemeLoader_ */