|
|
// This is a part of the Microsoft Management Console.
// Copyright (C) 1995-2001 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Management Console and related
// electronic documentation provided with the interfaces.
#ifndef _SERVICE_H
#define _SERVICE_H
#include "hidwnd.h"
#include "precdisp.h"
// Forward declarations
class CSnapin; class CResult;
#define RESULT_GROUP_INFO_BASE 1
#define RESULT_GROUP_INFO_SETTING 2
#define RESULT_GROUP_INFO_STATUS 4
// Internal structure used for cookies
struct FOLDER_DATA { UINT ResID; UINT DescID;
FOLDER_TYPES type; };
typedef CList<CResult *, CResult *> CResultItemList; class CFolder { // friend class CSnapin;
// friend class CComponentDataImpl;
public: // UNINITIALIZED is an invalid memory address and is a good cookie initializer
CFolder() { m_cookie = UNINITIALIZED; m_enumed = FALSE; m_pScopeItem = NULL; m_type = NONE; m_pszName = NULL; m_pszDesc = NULL; m_infName = NULL; m_dwMode = 0; m_ModeBits = 0; m_pData = NULL; m_iRefCount = 0; m_dwState = state_Unknown; m_ViewUpdate = FALSE; SetState(state_Unknown, state_Unknown); m_fShowViewMenu = FALSE; };
virtual ~CFolder();
// Interface
public: BOOL IsEnumerated() { return m_enumed; }; void Set(BOOL state) { m_enumed = state; }; void SetCookie(MMC_COOKIE cookie) { m_cookie = cookie; } BOOL SetDesc(LPCTSTR szDesc);
FOLDER_TYPES GetType() { ASSERT(m_type != NONE); return m_type; }; LPOLESTR GetName() { return m_pszName; }; LPOLESTR GetDesc() { return m_pszDesc; }; LPOLESTR GetInfFile() { return m_infName; }
DWORD GetDisplayName(CString &str, int iCol );
void SetInfFile(LPOLESTR sz) { if (!m_infName) { m_infName = sz; } } BOOL operator == (const CFolder& rhs) const { return rhs.m_cookie == m_cookie; }; BOOL operator == (long cookie) const { return cookie == m_cookie; }; LPSCOPEDATAITEM GetScopeItem() { return m_pScopeItem; } BOOL SetMode(DWORD dwMode); DWORD GetMode() { return m_dwMode; } DWORD GetModeBits() { return m_ModeBits; } DWORD AddModeBits(DWORD dwMB) { return m_ModeBits |= dwMB; } PVOID GetData() { return m_pData; } void SetData(PVOID pData) { m_pData = pData; } void SetShowViewMenu(BOOL flag) { m_fShowViewMenu = flag; } const BOOL GetShowViewMenu() { return m_fShowViewMenu; }
// Implementation
//private:
HRESULT Create(LPCTSTR szName, LPCTSTR szDesc, LPCTSTR infName, int nImage, int nOpenImage, FOLDER_TYPES type, BOOL bHasChildren, DWORD dwMode, PVOID pData);
DWORD GetState() { return m_dwState; };
void SetState( DWORD dwState, DWORD dwMask = 0xFFFFFFFF) { m_dwState = (dwState | (m_dwState & dwMask)); }; public: //
// Functions for objects.
//
BOOL SetDesc( DWORD dwStatus, DWORD dwNumChildren ); BOOL GetObjectInfo( DWORD *pdwStatus, DWORD *pdwNumChildren );
public: //
// Result item member functions.
//
DWORD GetResultItemHandle( // Gets this folder result item handle
HANDLE *handle); DWORD ReleaseResultItemHandle( // Releases memory associated with the handle.
HANDLE &handle);
DWORD GetResultItem( // Returns the result item with the given permission
HANDLE handle, POSITION &pos, CResult **pResult);
DWORD AddResultItem( // Adds a Result item to the list
HANDLE handle, CResult *pItem);
DWORD RemoveResultItem( // Removes a Result item
HANDLE handle, CResult *pItem);
int GetResultListCount() // Returns the number of result items in the list
{ return (int)m_resultItemList.GetCount(); };
POSITION GetResultItemPosition( // Returns the POSITION of the result item.
HANDLE handle, CResult *pResult);
void RemoveAllResultItems();
public: BOOL GetViewUpdate() const; void SetViewUpdate(BOOL fUpdate); //
// flags
enum CFolderEnums { state_InvalidTemplate = 0x0001, state_Unknown = 0x0002, state_beingRemoved = 0x0004 }; // Attributes
protected: int m_iRefCount; CResultItemList m_resultItemList;
private: LPSCOPEDATAITEM m_pScopeItem; MMC_COOKIE m_cookie; BOOL m_enumed; FOLDER_TYPES m_type; LPOLESTR m_pszName; LPOLESTR m_pszDesc; LPOLESTR m_infName; DWORD m_dwMode; DWORD m_ModeBits; PVOID m_pData; BOOL m_ViewUpdate; DWORD m_dwState; BOOL m_fShowViewMenu; };
typedef struct _tag_SCECOLUMNINFO { LPCTSTR pszText; BOOL bDelete;
}SCECOLUMNINFO, *PSCECOLUMNINFO;
#define RRFCREATE_COPY 1
#define RRFCREATE_DELETE 2
#define RRFCREATE_NORMAL 3
// Linked result items. Must be at least 4 for Analysis Groups at present
#define MAX_ITEM_ID_INDEX 4
#define NUM_GROUP_SIBLINGS 2
class CResult { // friend class CSnapin;
// friend class CComponentDataImpl;
public: // UNINITIALIZED is an invalid memory address and is a good cookie initializer
CResult() { m_szAttr = NULL; m_dwBase = 0; m_dwSetting = 0; m_type = ITEM_OTHER; m_status = SCE_STATUS_NOT_CONFIGURED; m_cookie = UNINITIALIZED; m_szUnits = NULL; m_nID = NULL; m_profBase = NULL; /*m_pDataObj = NULL;*/ m_pNotify = NULL; m_pRegChoices = NULL; m_pRegFlags = NULL; m_pvecPrecedenceDisplays = NULL; m_iRefCount = 1; m_pSnapin = NULL; //Raid #479626, Yanggao
m_hID = 0;
for (int i=0;i<NUM_GROUP_SIBLINGS;i++) { m_siblingCookies[i] = 0; } };
void Empty() { PREGCHOICE p = NULL; while(m_pRegChoices) { p = m_pRegChoices->pNext; LocalFree(m_pRegChoices); m_pRegChoices = p; } PREGFLAGS f = NULL; while(m_pRegFlags) { f = m_pRegFlags->pNext; LocalFree(m_pRegFlags); m_pRegFlags = f; }
if ( m_szAttr ) { delete [] m_szAttr; m_szAttr = NULL; }
if (ITEM_GROUP != m_type) { if( m_szUnits ) { LocalFree(m_szUnits); m_szUnits = NULL; } }
if (m_pvecPrecedenceDisplays) { for(vector<PPRECEDENCEDISPLAY>::iterator i = m_pvecPrecedenceDisplays->begin(); i != m_pvecPrecedenceDisplays->end(); ++i ) { delete *i; } delete m_pvecPrecedenceDisplays; m_pvecPrecedenceDisplays = NULL; } }
int AddRef() { return ++m_iRefCount; } int Release() { if (--m_iRefCount == 0) { delete this; return 0; } return m_iRefCount; };
virtual ~CResult();
// Interface
public: CString m_strInfFile; //only used for property page result item.
void SetSnapin(CSnapin* pSnapin) {m_pSnapin = pSnapin;}; void GetBaseNoUnit(LPTSTR& sz) { TranslateSettingToString(m_dwBase, NULL, m_type,&sz);}; CSnapin* GetSnapin(); DWORD_PTR GetProfileDefault(); DWORD_PTR GetRegDefault(); LPCTSTR GetAttrPretty(); void Update(CSnapin *pSnapin, BOOL bEntirePane = FALSE); void SetRelativeCookies(MMC_COOKIE cookie1, MMC_COOKIE cookie2) { m_siblingCookies[0] = cookie1; m_siblingCookies[1] = cookie2;}; MMC_COOKIE GetCookie() { return m_cookie;} RESULT_TYPES GetType() { return m_type;}; LPTSTR GetAttr() { return m_szAttr;}; LONG_PTR GetBase() { return m_dwBase;} LONG_PTR GetSetting() { return m_dwSetting;} void GetSetting(LPTSTR& sz) { TranslateSettingToString(m_dwSetting, m_szUnits, m_type,&sz);} void GetBase(LPTSTR& sz) { TranslateSettingToString(m_dwBase, m_szUnits, m_type,&sz);} BOOL operator == (LPTSTR attr) const { return lstrcmp(m_szAttr, attr) == 0;}; void SetUnits(LPCTSTR sz); LPTSTR GetUnits() { return m_szUnits;} void SetBase(LONG_PTR base) { m_dwBase = base;} void SetSetting(LONG_PTR base) { m_dwSetting = base;} LONG_PTR GetID() { return m_nID;} void SetID(LONG_PTR nID) { m_nID = nID;} void SetStatus(int status) { m_status = status;} int GetStatus() { return m_status;} void SetRegChoices(PREGCHOICE RegChoices) { m_pRegChoices = RegChoices;} PREGCHOICE GetRegChoices() { return m_pRegChoices;} void SetRegFlags(PREGFLAGS RegFlags) { m_pRegFlags = RegFlags;} PREGFLAGS GetRegFlags() { return m_pRegFlags;} void SetBaseProfile(PEDITTEMPLATE prof) { m_profBase = prof;} PEDITTEMPLATE GetBaseProfile() { return m_profBase;} long GethID() { return m_hID;};
vector<PPRECEDENCEDISPLAY>* GetPrecedenceDisplays(); vector<PPRECEDENCEDISPLAY>* GetPolicyPrecedenceDisplays(); vector<PPRECEDENCEDISPLAY>* GetGroupPrecedenceDisplays(); vector<PPRECEDENCEDISPLAY>* GetPrivilegePrecedenceDisplays(); vector<PPRECEDENCEDISPLAY>* GetFilePrecedenceDisplays(); vector<PPRECEDENCEDISPLAY>* GetRegistryPrecedenceDisplays(); vector<PPRECEDENCEDISPLAY>* GetServicePrecedenceDisplays(); vector<PPRECEDENCEDISPLAY>* GetRegValuePrecedenceDisplays();
DWORD GetDisplayName( CFolder *pFolder, CString &str, int iCol );
// Implementation
HRESULT Create(LPCTSTR szAttr, LONG_PTR lBase, LONG_PTR lSetting, RESULT_TYPES type, int status, MMC_COOKIE cookie, LPCTSTR szUnits, LONG_PTR nID,PEDITTEMPLATE pBase, LPDATAOBJECT pDataObj,LPNOTIFY pNotify,CSnapin *pSnapin, long hID);
LPCTSTR GetSourceGPOString(); protected: void TranslateSettingToString( LONG_PTR setting, LPCTSTR unit, RESULT_TYPES type, LPTSTR *pTmpstr ); DWORD GetStatusErrorString( CString *pStr );
// Attributes
private: //LPRESULTDATA m_pResultPane;
DWORD m_dwArea; LPTSTR m_szAttr; LONG_PTR m_dwBase; LONG_PTR m_dwSetting; LPTSTR m_szUnits; RESULT_TYPES m_type; int m_status; MMC_COOKIE m_cookie; MMC_COOKIE m_siblingCookies[NUM_GROUP_SIBLINGS]; LONG_PTR m_nID; PEDITTEMPLATE m_profBase; LPNOTIFY m_pNotify; PREGCHOICE m_pRegChoices; PREGFLAGS m_pRegFlags; CSnapin *m_pSnapin; vector<PPRECEDENCEDISPLAY>* m_pvecPrecedenceDisplays; int m_iRefCount; long m_hID; //Raid #510407, 2/25/2002, yanggao
};
#endif
|