#ifndef __DFS_REFERRAL_H__ #define __DFS_REFERRAL_H__ #include "DfsGeneric.hxx" #include "DfsReferralData.h" #include "DfsStore.hxx" #include "DfsRootFolder.hxx" #include "DfsFolderReferralData.hxx" typedef struct _REPLICA_COST_INFORMATION_ { ULONG ReplicaCost; DfsReplica * pReplica; }REPLICA_COST_INFORMATION, *PREPLICA_COST_INFORMATION; typedef struct _REFERRAL_INFORMATION { ULONG NumberOfReplicas; ULONG TotalReplicaStringLength; PUNICODE_STRING pUseTargetServer; PUNICODE_STRING pUseTargetFolder; REPLICA_COST_INFORMATION ReplicaCosts[1]; } REFERRAL_INFORMATION, *PREFERRAL_INFORMATION; DFSSTATUS DfsGetRootFolder( PUNICODE_STRING pNameContext, PUNICODE_STRING pShareName, DfsRootFolder **ppRoot ); DFSSTATUS DfsGetRootFolder( PUNICODE_STRING pNameContext, PUNICODE_STRING pShareName, PUNICODE_STRING pRemains, DfsRootFolder **ppRoot ); DFSSTATUS DfsGetOnlyRootFolder( DfsRootFolder **ppRoot ); DFSSTATUS DfsLookupFolder( PUNICODE_STRING pName, PUNICODE_STRING pRemainingName, DfsFolder **ppFolder ); DFSSTATUS DfsGetReferralData( PUNICODE_STRING pName, PUNICODE_STRING pRemainingName, DfsFolderReferralData **ppReferralData, PBOOLEAN pCachehit ); DFSSTATUS DfsGenerateReplicaCosts( DfsFolderReferralData *pReferralData, REPLICA_COST_INFORMATION **ppReplicaCosts, ULONG NumReplicasToReturn, LPWSTR SiteName); VOID DfsSortReplicas( REPLICA_COST_INFORMATION * pReplicaCosts, ULONG NumReplicas); ULONG DfsCalculateReplicaStringLength( DfsReferralData *pReferralData, PUNICODE_STRING pUseFolder, ULONG NumReplicasToReturn); DFSSTATUS DfsExtractReferralData( DfsReferralData *pReferralData, DWORD NumReplicasToReturn, ULONG CostLimit, PUNICODE_STRING Name, PUNICODE_STRING pUseFolder, REPLICA_COST_INFORMATION * pReplicaCosts, REFERRAL_HEADER ** ppReferralHeader); DFSSTATUS DfsGenerateReferral( LPWSTR LinkName, DfsSite *pSite, DWORD NumReplicasToReturn, ULONG CostLimit, REFERRAL_HEADER ** ppReferralHeader); VOID DfsReleaseReferral( REFERRAL_HEADER *pReferralHeader); void DfshuffleGroup( REPLICA_COST_INFORMATION * pReplicaCosts, ULONG nStart, ULONG nEnd); DFSSTATUS DfsGenerateCompatReferral( LPWSTR LinkName, DfsSite *pReferralSite, REFERRAL_HEADER ** ppReferralHeader); #endif //__DFS_REFERRAL_H__