|
|
// This is a part of the Microsoft Management Console.
// Copyright (C) Microsoft Corporation, 1995 - 1999
// 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 _FOLDERS_H
#define _FOLDERS_H
/////////////////////
// File Versions
// current version
// removal of m_RowEnum
#define VER_FOLDER_SAVE_STREAM_2 0x2
// B3 version
#define VER_FOLDER_SAVE_STREAM_1 0x1
/////////////////////
/////////////////////
// File Versions
// current version
// removal of column sizes, sort order info, view type
#define VER_CERTVIEWROWENUM_SAVE_STREAM_4 0x4
// this version (written prior through Win2000 B3) includes column sizes
#define VER_CERTVIEWROWENUM_SAVE_STREAM_3 0x3
/////////////////////
// Forward declarations
class CSnapin; class CFolder; class CertSvrCA; class CertSvrMachine;
struct RESULT_DATA { SCOPE_TYPES itemType; CFolder* pParentFolder;
DWORD cStringArray; LPWSTR szStringArray[3]; // name, size, type
}; enum { RESULTDATA_ARRAYENTRY_NAME =0, RESULTDATA_ARRAYENTRY_SIZE, RESULTDATA_ARRAYENTRY_TYPE, };
HRESULT IsColumnShown(MMC_COLUMN_SET_DATA* pCols, ULONG idxCol, BOOL* pfShown); HRESULT CountShownColumns(MMC_COLUMN_SET_DATA* pCols, ULONG* plCols);
//////////////////////////////////////////////////////////////////////////
// COLUMN TYPE cache
//
// This cache holds data that populated while setting column headings.
// The data applies to the column view, not the database view.
// Caching here allows an easy type-check during a compare() call, etc.
typedef struct _COLUMN_TYPE_CACHE { // volatile members
int iViewCol;
} COLUMN_TYPE_CACHE;
class CertViewRowEnum { protected:
// View Interface
ICertView* m_pICertView; BOOL m_fCertViewOpenAttempted;
// Row Enum
IEnumCERTVIEWROW* m_pRowEnum; LONG m_idxRowEnum; BOOL m_fRowEnumOpenAttempted;
// Query Restrictions
PQUERY_RESTRICTION m_pRestrictions[2]; BOOL m_fRestrictionsActive[2];
// Column property cache
COLUMN_TYPE_CACHE* m_prgColPropCache; DWORD m_dwColumnCount;
DWORD m_dwErr;
public: CertViewRowEnum(); virtual ~CertViewRowEnum();
public: BOOL m_fKnowNumResultRows; DWORD m_dwResultRows; BOOL m_fCertView;
public: HRESULT GetLastError() { return m_dwErr; }
// View Interface
HRESULT GetView(CertSvrCA* pCA, ICertView** ppView); void ClearCachedCertView() { m_fCertViewOpenAttempted = FALSE; }
// Row Enum
HRESULT GetRowEnum(CertSvrCA* pCA, IEnumCERTVIEWROW** ppRowEnum); HRESULT GetRowMaxIndex(CertSvrCA* pCA, LONG* pidxMax);
LONG GetRowEnumPos() { return m_idxRowEnum; } HRESULT SetRowEnumPos(LONG idxRow); HRESULT ResetCachedRowEnum(); // back to 0th row
void InvalidateCachedRowEnum(); // refresh
// Query Restrictions
void SetQueryRestrictions(PQUERY_RESTRICTION pQR, int i) { if (m_pRestrictions[i]) FreeQueryRestrictionList(m_pRestrictions[i]); m_pRestrictions[i] = pQR; } PQUERY_RESTRICTION GetQueryRestrictions(int i) { return m_pRestrictions[i]; } BOOL FAreQueryRestrictionsActive(int i) { return m_fRestrictionsActive[i]; } void SetQueryRestrictionsActive(BOOL fRestrict, int i) { m_fRestrictionsActive[i] = fRestrict; }
HRESULT ResetColumnCount(LONG lCols); LONG GetColumnCount() { return m_dwColumnCount; } // DB Column property cache
void FreeColumnCacheInfo(); HRESULT GetColumnCacheInfo( IN int iIndex, OUT OPTIONAL int* pidxViewCol);
// sets column width by heading
HRESULT SetColumnCacheInfo( IN int iIndex, IN int idxViewCol);
public: // IPersistStream interface members
HRESULT Load(IStream *pStm); HRESULT Save(IStream *pStm, BOOL fClearDirty); HRESULT GetSizeMax(int *pcbSize);
};
class CFolder { SCOPE_TYPES m_itemType; // Used for debug purposes. This should be the first
// member. The class should not have any virtual fuctions.
friend class CSnapin; friend class CComponentDataImpl;
public: CFolder() { m_itemType = UNINITIALIZED_ITEM; m_cookie = UNINITIALIZED; // invalid memory address -- good cookie initializer
m_enumed = FALSE; m_type = NONE; m_pszName = NULL;
m_pCertCA = NULL;
ZeroMemory(&m_ScopeItem, sizeof(SCOPEDATAITEM)); }
~CFolder() { if (m_pszName) CoTaskMemFree(m_pszName); }
// Interface
public: BOOL IsEnumerated() { return m_enumed; } void Set(BOOL state) { m_enumed = state; } void SetCookie(MMC_COOKIE cookie) { m_cookie = cookie; } void SetScopeItemInformation(int nImage, int nOpenImage);
FOLDER_TYPES GetType() { ASSERT(m_type != NONE); return m_type; } CertSvrCA* GetCA() { ASSERT(m_pCertCA != NULL); return m_pCertCA; } BOOL operator == (const CFolder& rhs) const { return rhs.m_cookie == m_cookie; } BOOL operator == (MMC_COOKIE cookie) const { return cookie == m_cookie; } LPCWSTR GetName() { return m_pszName; } void SetName(LPWSTR pszIn) { UINT len = wcslen(pszIn) + 1; LPWSTR psz = (LPWSTR)CoTaskMemAlloc(len * sizeof(WCHAR)); if (psz != NULL) { wcscpy(psz, pszIn); CoTaskMemFree(m_pszName); m_pszName = psz; } }
// IPersistStream interface members
HRESULT Load(IStream *pStm); HRESULT Save(IStream *pStm, BOOL fClearDirty); HRESULT GetSizeMax(int *pcbSize);
// Implementation
private: void SetProperties( LPCWSTR szName, SCOPE_TYPES itemType, FOLDER_TYPES type, int iChildren = 0);
// Attributes
private: SCOPEDATAITEM m_ScopeItem; MMC_COOKIE m_cookie; BOOL m_enumed; FOLDER_TYPES m_type; LPOLESTR m_pszName;
CertSvrCA* m_pCertCA; };
BOOL IsAllowedStartStop(CFolder* pFolder, CertSvrMachine* pMachine); HRESULT GetCurrentColumnSchema( IN LPCWSTR szConfig, IN BOOL fCertView, OUT CString** pprgcstrColumns, OUT OPTIONAL LONG** pprglTypes, OUT OPTIONAL BOOL** pprgfIndexed, OUT LONG* plEntries);
#endif // _FOLDERS_H_
|