windows-nt/Source/XPSP1/NT/base/fs/dfs/dfsm/server/csites.hxx
2020-09-26 16:20:57 +08:00

88 lines
2 KiB
C++

//+----------------------------------------------------------------------------
//
// Copyright (C) 1997, Microsoft Corporation
//
// File: csites.hxx
//
// Contents: Class to implement sites
//
// Classes: CSites
//
// Functions:
//
// History: Dec 12, 1997 JHarper created
//
//-----------------------------------------------------------------------------
#ifndef _CSITES_HXX_
#define _CSITES_HXX_
typedef struct _DFSM_SITE_ENTRY {
LIST_ENTRY Link;
LPWSTR ServerName;
ULONG Flags;
DFS_SITELIST_INFO Info;
} DFSM_SITE_ENTRY, *PDFSM_SITE_ENTRY, *LPDFSM_SITE_ENTRY;
#define DFSM_SITE_ENTRY_DELETE_PENDING 0x000000001
class CSites {
public:
CSites(
LPWSTR pwszFileName,
LPDWORD pdwErr);
~CSites();
VOID AddRef();
VOID Release();
DWORD AddOrUpdateSiteInfo(
LPWSTR pServerName,
ULONG SiteCount,
PDFS_SITENAME_INFO pSites);
PDFSM_SITE_ENTRY LookupSiteInfo(
LPWSTR pServerName);
VOID MarkEntriesForMerge();
VOID SyncPktSiteTable();
private:
DWORD _AllocateSiteInfo(
LPWSTR pServerName,
ULONG SiteCount,
PDFS_SITENAME_INFO pSites,
PDFSM_SITE_ENTRY *ppSiteInfo);
DWORD _ReadSiteTable();
DWORD _WriteSiteTable();
VOID _DumpSiteTable();
BOOLEAN _CompareEntries(
PDFSM_SITE_ENTRY pDfsmInfo1,
PDFSM_SITE_ENTRY pDfsmInfo2);
ULONG _cRef;
BOOLEAN _fDirty;
LPWSTR _pwszFileName;
GUID _SiteTableGuid;
LIST_ENTRY _SiteTableHead;
};
NTSTATUS
DfsSendUpdate(
LPWSTR pServerName,
ULONG SiteCount,
PDFS_SITENAME_INFO pSites);
#endif _CSITES_HXX_