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.
 
 
 
 
 
 

88 lines
4.5 KiB

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