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.
275 lines
6.2 KiB
275 lines
6.2 KiB
//+--------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1994 - 1998.
|
|
//
|
|
// File: ScopeManager.hxx
|
|
//
|
|
// Contents: Declaration of class used to hold scope object hierarchy
|
|
//
|
|
// Classes: CScopeManager
|
|
//
|
|
// History: 02-24-2000 davidmun Created
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
#ifndef __SCOPE_MANAGER_HXX_
|
|
#define __SCOPE_MANAGER_HXX_
|
|
|
|
class CDomainInfo;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
//
|
|
// Class: CScopeManager (sm)
|
|
//
|
|
// Purpose: Maintain a tree of CScope-derived objects, and provide access
|
|
// to them via methods that return the currently selected scope,
|
|
// the scope with a given name, etc.
|
|
//
|
|
// History: 05-24-2000 DavidMun Created
|
|
//
|
|
// Notes: This object owns the Look In dialog.
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
class CScopeManager
|
|
{
|
|
public:
|
|
|
|
CScopeManager(
|
|
const CObjectPicker &ropContaining):
|
|
m_rop(ropContaining),
|
|
m_hScopeImageList(NULL),
|
|
m_StartingScopeType(ST_INVALID)
|
|
{
|
|
TRACE_CONSTRUCTOR(CScopeManager);
|
|
|
|
m_rpInvalidScope.Acquire(new CInvalidScope(ropContaining));
|
|
}
|
|
|
|
|
|
~CScopeManager()
|
|
{
|
|
TRACE_DESTRUCTOR(CScopeManager);
|
|
|
|
Clear();
|
|
if (m_hScopeImageList)
|
|
{
|
|
ImageList_Destroy(m_hScopeImageList);
|
|
m_hScopeImageList = NULL;
|
|
}
|
|
}
|
|
|
|
HRESULT
|
|
Initialize(
|
|
PCDSOP_INIT_INFO pInitInfo);
|
|
|
|
const CScope &
|
|
AddUserEnteredScope(
|
|
const ADD_SCOPE_INFO &asi) const;
|
|
|
|
const CScope &
|
|
CScopeManager::AddCrossForestDomainScope(
|
|
const ADD_SCOPE_INFO &asi) const;
|
|
|
|
|
|
void
|
|
Clear();
|
|
|
|
const SScopeParameters *
|
|
GetScopeParams(
|
|
SCOPE_TYPE Type) const;
|
|
|
|
void
|
|
GetRootScopeIterators(
|
|
vector<RpScope>::const_iterator *pitBegin,
|
|
vector<RpScope>::const_iterator *pitEnd) const
|
|
{
|
|
ASSERT(pitBegin && pitEnd);
|
|
|
|
if (!pitBegin || !pitEnd)
|
|
{
|
|
return;
|
|
}
|
|
*pitBegin = m_vrpRootScopes.begin();
|
|
*pitEnd = m_vrpRootScopes.end();
|
|
}
|
|
|
|
#if (DBG == 1)
|
|
|
|
BOOL
|
|
IsValidScope(
|
|
CScope *pScope) const;
|
|
|
|
#endif // (DBG == 1)
|
|
|
|
void
|
|
DoLookInDialog(
|
|
HWND hwndParent) const;
|
|
|
|
const String &
|
|
GetContainerFilter(
|
|
HWND hwnd) const
|
|
{
|
|
TRACE_METHOD(CScopeManager, GetContainerFilter);
|
|
|
|
if (m_strContainerFilter.empty())
|
|
{
|
|
_InitContainerFilter(hwnd);
|
|
}
|
|
return m_strContainerFilter;
|
|
}
|
|
|
|
const CScope &
|
|
GetCurScope() const
|
|
{
|
|
if (m_rpCurScope.get())
|
|
{
|
|
return *m_rpCurScope.get();
|
|
}
|
|
return *m_rpInvalidScope.get();
|
|
}
|
|
|
|
const CScope &
|
|
GetStartingScope() const
|
|
{
|
|
if (m_rpStartingScope.get())
|
|
{
|
|
return *m_rpStartingScope.get();
|
|
}
|
|
return *m_rpInvalidScope.get();
|
|
}
|
|
|
|
const CScope &
|
|
GetParent(
|
|
const CScope &Child) const;
|
|
|
|
|
|
const CScope &
|
|
LookupScopeByDisplayName(
|
|
const String &strDisplayName) const;
|
|
|
|
const CScope &
|
|
LookupScopeByFlatName(
|
|
const String &strFlatName) const;
|
|
|
|
const CScope &
|
|
LookupScopeByType(
|
|
SCOPE_TYPE Type) const
|
|
{
|
|
return _LookupScopeByType(Type,
|
|
m_vrpRootScopes.begin(),
|
|
m_vrpRootScopes.end());
|
|
}
|
|
|
|
const CScope &
|
|
LookupScopeById(
|
|
ULONG id) const
|
|
{
|
|
return _LookupScopeById(id,
|
|
m_vrpRootScopes.begin(),
|
|
m_vrpRootScopes.end());
|
|
}
|
|
|
|
VOID
|
|
DeleteLastScope() const
|
|
{
|
|
m_vrpRootScopes.pop_back();
|
|
}
|
|
|
|
private:
|
|
|
|
CScopeManager &
|
|
operator=(const CScopeManager &);
|
|
|
|
enum SCOPE_NAME_TYPE
|
|
{
|
|
NAME_IS_DISPLAY_NAME,
|
|
NAME_IS_FLAT_NAME
|
|
};
|
|
|
|
HRESULT
|
|
_ValidateFilterFlags(
|
|
PCDSOP_SCOPE_INIT_INFO pScopeInit,
|
|
ULONG flScopeTypes);
|
|
|
|
void
|
|
_InitDomainScopesJoinedNt5(
|
|
CGcScope *pGcScope);
|
|
|
|
void
|
|
_AddTreeJoinedNt5(
|
|
CLdapContainerScope *pParent,
|
|
ULONG idxCur,
|
|
CDomainInfo *adi,
|
|
PDS_DOMAIN_TRUSTS Domains);
|
|
|
|
void
|
|
_InitScopesJoinedNt4();
|
|
|
|
void
|
|
_InitContainerFilter(
|
|
HWND hwnd) const;
|
|
|
|
const CScope &
|
|
_LookupScopeByName(
|
|
const String &strName,
|
|
SCOPE_NAME_TYPE NameIs,
|
|
vector<RpScope>::const_iterator itBegin,
|
|
vector<RpScope>::const_iterator itEnd) const;
|
|
|
|
const CScope &
|
|
_LookupScopeByType(
|
|
SCOPE_TYPE Type,
|
|
vector<RpScope>::const_iterator itBegin,
|
|
vector<RpScope>::const_iterator itEnd) const;
|
|
|
|
const CScope &
|
|
_LookupScopeById(
|
|
ULONG id,
|
|
vector<RpScope>::const_iterator itBegin,
|
|
vector<RpScope>::const_iterator itEnd) const;
|
|
|
|
void
|
|
_AddRootTrustScopes
|
|
(
|
|
vector<ADD_SCOPE_INFO> &asiv,
|
|
const SScopeParameters *pspExternalUplevel
|
|
);
|
|
|
|
NET_API_STATUS
|
|
MyDsEnumerateDomainTrusts
|
|
(
|
|
LPWSTR pwzTarget,
|
|
ULONG flags,
|
|
PDS_DOMAIN_TRUSTS *Domains,
|
|
ULONG *cDomains
|
|
);
|
|
|
|
|
|
#if (DBG == 1)
|
|
|
|
BOOL
|
|
_IsChildScope(
|
|
CScope *pParent,
|
|
CScope *pMaybeChild) const;
|
|
|
|
#endif // (DBG == 1)
|
|
|
|
// used as error return for returning reference to scope
|
|
RpScope m_rpInvalidScope;
|
|
|
|
const CObjectPicker &m_rop;
|
|
mutable vector<RpScope> m_vrpRootScopes;
|
|
vector<SScopeParameters> m_vScopeParameters;
|
|
HIMAGELIST m_hScopeImageList;
|
|
SCOPE_TYPE m_StartingScopeType;
|
|
RpScope m_rpStartingScope;
|
|
mutable RpScope m_rpCurScope;
|
|
mutable String m_strContainerFilter;
|
|
};
|
|
|
|
#endif // __SCOPE_MANAGER_HXX_
|
|
|
|
|