// -------------------------------------------------------------------------- // Module Name: ThemeManagerAPIRequest.h // // Copyright (c) 2000, Microsoft Corporation // // This file contains a class that implements the work for the theme server. // // History: 2000-10-10 vtan created // 2000-11-29 vtan moved to separate file // -------------------------------------------------------------------------- #ifndef _ThemeManagerAPIRequest_ #define _ThemeManagerAPIRequest_ #include "APIRequest.h" #include "DynamicArray.h" #include "ThemeManagerSessionData.h" // -------------------------------------------------------------------------- // CThemeManagerAPIRequest // // Purpose: This is an intermediate class that contains a common method // that can be used by sub-classes. // // History: 2000-10-10 vtan created // 2000-11-29 vtan moved to separate file // 2002-03-21 scotthan add Execute_ProcessLoadTheme, Execute_ProcessAssignSection. // 2002-03-24 scotthan propagate DispatchSync to API request instance. // -------------------------------------------------------------------------- class CThemeManagerAPIRequest : public CAPIRequest { private: CThemeManagerAPIRequest (void); public: CThemeManagerAPIRequest (CAPIDispatcher* pAPIDispatcher); CThemeManagerAPIRequest (CAPIDispatcher* pAPIDispatcher, const CPortMessage& portMessage); virtual ~CThemeManagerAPIRequest (void); virtual NTSTATUS Execute (CAPIDispatchSync* pAPIDispatchSync); static NTSTATUS SessionDestroy (DWORD dwSessionID); static NTSTATUS InitializeServerChangeNumber (void); static NTSTATUS StaticInitialize (void); static NTSTATUS StaticTerminate (void); static NTSTATUS ArrayInitialize (void); static NTSTATUS ArrayTerminate (void); private: NTSTATUS ImpersonateClientIfRequired (void); NTSTATUS ClientHasTcbPrivilege (void); static int FindIndexSessionData (DWORD dwSessionID); NTSTATUS GetClientSessionData (void); NTSTATUS Execute_ThemeHooksOn (void); NTSTATUS Execute_ThemeHooksOff (void); NTSTATUS Execute_GetStatusFlags (void); NTSTATUS Execute_GetCurrentChangeNumber (void); NTSTATUS Execute_GetNewChangeNumber (void); NTSTATUS Execute_SetGlobalTheme (void); NTSTATUS Execute_MarkSection (void); NTSTATUS Execute_GetGlobalTheme (void); NTSTATUS Execute_CheckThemeSignature (void); NTSTATUS Execute_LoadTheme (void); NTSTATUS Execute_ProcessLoadTheme (CAPIDispatchSync* pAPIDispatchSync); NTSTATUS Execute_ProcessAssignSection (void); // These are internal and typically require SE_TCB_PRIVILEGE to execute. NTSTATUS Execute_UserLogon (void); NTSTATUS Execute_UserLogoff (void); NTSTATUS Execute_SessionCreate (void); NTSTATUS Execute_SessionDestroy (void); NTSTATUS Execute_Ping (void); private: HANDLE _hToken; CThemeManagerSessionData* _pSessionData; static CDynamicCountedObjectArray* s_pSessionData; static CCriticalSection* s_pLock; static DWORD s_dwServerChangeNumber; static const TCHAR s_szServerChangeNumberValue[]; }; #endif /* _ThemeManagerAPIRequest_ */