windows-nt/Source/XPSP1/NT/admin/wmiprov/trustmon/domain.h
2020-09-26 16:20:57 +08:00

121 lines
3.2 KiB
C++

//+----------------------------------------------------------------------------
//
// Windows NT Active Directory Service domain trust verification WMI provider
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 2000
//
// File: domain.h
//
// Contents: domain class definition
//
// Classes: CDomainInfo
//
// History: 27-Mar-00 EricB created
//
//-----------------------------------------------------------------------------
#ifndef DOMAIN_H
#define DOMAIN_H
extern PCWSTR CSTR_PROP_LOCAL_DNS_NAME;
extern PCWSTR CSTR_PROP_LOCAL_FLAT_NAME;
extern PCWSTR CSTR_PROP_LOCAL_SID;
extern PCWSTR CSTR_PROP_LOCAL_TREE_NAME;
extern PCWSTR CSTR_PROP_LOCAL_DC_NAME;
#ifndef MAXDWORD
#define MAXDWORD ((DWORD) -1)
#endif
class CTrustPrv; // forward declaration;
//+----------------------------------------------------------------------------
//
// class CDomainInfo
//
// Domain Information with list of all of the domain's Trusts
//
//-----------------------------------------------------------------------------
class CDomainInfo
{
public:
CDomainInfo(void);
~CDomainInfo(void);
friend class CTrustPrv;
void SetDnsName(PWSTR pszName) {m_strDomainDnsName = pszName;}
PCWSTR GetDnsName(void) {return m_strDomainDnsName;}
void SetFlatName(PWSTR pszFlatName) {m_strDomainFlatName = pszFlatName;}
PCWSTR GetFlatName(void) {return m_strDomainFlatName;}
BOOL SetSid(PSID pSid);
PCWSTR GetSid(void) {return m_strSid;}
void SetForestName(PWSTR pszName) {m_strForestName = pszName;}
PCWSTR GetForestName(void) {return m_strForestName;}
void SetDcName(PWSTR pszName) {m_strDcName = pszName;}
PCWSTR GetDcName(void) {return m_strDcName;}
HRESULT Init(IWbemClassObject * pClassDef); // Call once to initialize this object
void Reset(void); // Reset the internal cache
HRESULT EnumerateTrusts(void); // Enumerate Outgoing trusts for the local domain
size_t Size(void) const {return m_vectTrustInfo.size();} // Get the number of trusts
CTrustInfo * FindTrust(PCWSTR strTrust); // Find trust's index
CTrustInfo * GetTrustByIndex(size_t index); // Get trust info by Index
BOOL IsTrustListStale(LARGE_INTEGER liMaxAge);
protected:
HRESULT CreateAndSendInst(IWbemObjectSink * pResponseHandler);
// Object's Status
BOOL IsEnumerated(void) const {return m_liLastEnumed.QuadPart != 0;}
private:
//
// Microsoft_LocalDomainInfo properties:
//
CString m_strDomainFlatName;
CString m_strDomainDnsName;
CString m_strForestName;
CString m_strSid;
CString m_strDcName;
// TODO: FSMO holder info???
// internal variables.
//
CComPtr<IWbemClassObject> m_sipClassDefLocalDomain;
vector<CTrustInfo *> m_vectTrustInfo; // array of trusts
LARGE_INTEGER m_liLastEnumed;
};
class CSmartPolicyHandle
{
public:
CSmartPolicyHandle(void) : m_hPolicy(NULL) {};
~CSmartPolicyHandle(void)
{
if( m_hPolicy )
{
LsaClose(m_hPolicy);
m_hPolicy = NULL;
}
};
LSA_HANDLE * operator&()
{
return &m_hPolicy;
}
operator LSA_HANDLE() const
{
return m_hPolicy;
}
private:
LSA_HANDLE m_hPolicy;
};
#endif //DOMAIN_H