2025-04-27 07:49:33 -04:00

204 lines
4.7 KiB
C++

#ifndef __DFS_INIT__
#define __DFS_INIT__
class DfsFolderReferralData;
class DfsServerSiteInfo;
class DfsStore;
class DfsSiteSupport;
class DfsRegistryStore;
class DfsADBlobStore;
class DfsEnterpriseStore;
class DfsDomainInformation;
#define DFS_LOCAL_NAMESPACE 1
#define DFS_CREATE_DIRECTORIES 2
#define DFS_MIGRATE 4
#define CheckDfsMigrate() (DfsServerGlobalData.Flags & DFS_MIGRATE)
#define CheckLocalNamespace() (DfsServerGlobalData.Flags & DFS_LOCAL_NAMESPACE)
#define DfsCheckCreateDirectories() (DfsServerGlobalData.Flags & DFS_CREATE_DIRECTORIES)
#define MAX_DFS_NAMESPACES 256
typedef struct _DFS_MACHINE_INFORMATION {
LPWSTR StaticComputerNameNetBIOS;
LPWSTR StaticComputerNameDnsFullyQualified;
LPWSTR StaticComputerNameDnsDomain;
}DFS_MACHINE_INFORMATION;
typedef struct _DFS_SERVER_GLOBAL_DATA {
ULONG Flags;
BOOL IsWorkGroup;
CRITICAL_SECTION DataLock;
DfsStore *pRegisteredStores;
LPWSTR HandledNamespace[MAX_DFS_NAMESPACES];
ULONG NumberOfNamespaces;
DfsFolderReferralData *LoadedList;
DfsSiteSupport *pSiteSupport;
DfsRegistryStore *pDfsRegistryStore;
DfsADBlobStore *pDfsADBlobStore;
DfsEnterpriseStore *pDfsEnterpriseStore;
DFS_MACHINE_INFORMATION DfsMachineInfo;
ULONG CacheFlushInterval;
BOOLEAN IsCluster;
BOOLEAN IsDc;
DfsDomainInformation *pDomainInfo;
UNICODE_STRING DomainNameFlat;
UNICODE_STRING DomainNameDns;
UNICODE_STRING DfsAdNameContext;
struct _DFS_PREFIX_TABLE *pDirectoryPrefixTable; // The directory namespace prefix table.
} DFS_SERVER_GLOBAL_DATA, *PDFS_SERVER_GLOBAL_DATA;
extern DFS_SERVER_GLOBAL_DATA DfsServerGlobalData;
#define DfsIsMachineDC() (DfsServerGlobalData.IsDc)
#define DfsIsMachineCluster() (DfsServerGlobalData.IsCluster)
#define DfsIsMachineWorkstation()(DfsServerGlobalData.IsWorkGroup)
LPWSTR
DfsGetDfsAdNameContextString();
DFSSTATUS
DfsSetDomainNameFlat(LPWSTR DomainNameFlatString);
DFSSTATUS
DfsSetDomainNameDns( LPWSTR DomainNameDnsString );
DFSSTATUS
DfsAcquireReadLock(
PCRITICAL_SECTION pLock);
DFSSTATUS
DfsAcquireWriteLock(
PCRITICAL_SECTION pLock);
#define DfsAcquireGlobalDataLock() DfsAcquireLock( &DfsServerGlobalData.DataLock )
#define DfsReleaseGlobalDataLock() DfsReleaseLock( &DfsServerGlobalData.DataLock )
#define DfsReleaseLock(_x) LeaveCriticalSection(_x)
#define DfsAcquireLock(_x) DfsAcquireWriteLock(_x)
#define CACHE_FLUSH_INTERVAL 15 * 60 * 1000
#define SCAVENGE_TIME DfsServerGlobalData.CacheFlushInterval
#define ACQUIRE_LOADED_LIST_LOCK()\
EnterCriticalSection(&DfsServerGlobalData.DataLock);
#define RELEASE_LOADED_LIST_LOCK()\
LeaveCriticalSection(&DfsServerGlobalData.DataLock);
extern LPWSTR DfsRegistryHostLocation;
extern LPWSTR DfsOldRegistryLocation;
extern LPWSTR DfsOldStandaloneChild;
extern LPWSTR DfsRegistryDfsLocation;
extern LPWSTR DfsNewRegistryLocation;
extern LPWSTR DfsStandaloneChild;
extern LPWSTR DfsADBlobChild;
extern LPWSTR DfsEnterpriseChild;
extern LPWSTR DfsRootShareValueName;
extern LPWSTR DfsLogicalShareValueName;
extern LPWSTR DfsFtDfsValueName;
extern LPWSTR DfsFtDfsConfigDNValueName;
VOID
DfsAddReferralDataToLoadedList(
DfsFolderReferralData *pRefData );
VOID
DfsRemoveReferralDataFromLoadedList(
DfsFolderReferralData **ppReferralData );
DFSSTATUS
DfsGetServerInfo (
PUNICODE_STRING pServer,
DfsServerSiteInfo **ppInfo );
DFSSTATUS
DfsReleaseServerInfo (
DfsServerSiteInfo *pInfo);
DFSSTATUS
DfsGetMachineName(
PUNICODE_STRING pName);
VOID
DfsReleaseMachineName(
PUNICODE_STRING pName );
DFSSTATUS
DfsGetDomainName(
PUNICODE_STRING pName);
VOID
DfsReleaseDomainName(
PUNICODE_STRING pName );
DFSSTATUS
DfsAddHandledNamespace(
LPWSTR Name,
BOOLEAN Migrate );
DFSSTATUS
DfsInitializeComputerInfo();
DFSSTATUS
DfsGetRegistryStore(
DfsRegistryStore **ppStore );
DFSSTATUS
DfsGetADBlobStore(
DfsADBlobStore **ppStore );
DFSSTATUS
DfsAddKnownDirectoryPath(
PUNICODE_STRING pDirectoryName,
PUNICODE_STRING pLogicalShare );
DFSSTATUS
DfsRemoveKnownDirectoryPath(
PUNICODE_STRING pDirectoryName,
PUNICODE_STRING pLogicalShare );
VOID
DfsReleaseDomainInfo (
DfsDomainInformation *pDomainInfo );
DFSSTATUS
DfsAcquireDomainInfo (
DfsDomainInformation **ppDomainInfo );
BOOLEAN
DfsIsNameContextDomainName( PUNICODE_STRING pName );
DFSSTATUS DfsGetBlobDCName( PUNICODE_STRING pName );
VOID DfsReleaseBlobDCName( PUNICODE_STRING pName );
BOOLEAN
DfsIsTargetCurrentMachine (PUNICODE_STRING pServer );
#endif __DFS_INIT__