/*++ Module Name: NetUtils.h Abstract: This is the header file for the utility functions for Network APIs. */ #ifndef _NETUTILS_H #define _NETUTILS_H #include "stdafx.h" #include // For define types like DWORD, HANDLE etc. #include // For SysAllocString(). #include // For Lan Manager API error codes and return value types. #include // For Lan Manager API constants. #include // For Server specific Lan Manager APIs. #include // For NetGetDCInfo. #include // For NetApiBufferFree. #include #include #include #include #include // I_Net #include "dfsenums.h" #include using namespace std; class NETNAME // Structure to store and send a list of names { public: CComBSTR bstrNetName; // To store Name of Domain, Server, Share etc. }; typedef list NETNAMELIST; class ROOTINFO { public: CComBSTR bstrRootName; enum DFS_TYPE enumRootType; }; typedef list ROOTINFOLIST; class SUBSCRIBER { public: CComBSTR bstrMemberDN; CComBSTR bstrRootPath; }; typedef list SUBSCRIBERLIST; /*---------------------------------------------------------------------- H E L P E R F U N C T I O N S ------------------------------------------------------------------------*/ // Recursive function to flatten the domain tree returned by GetDomains() method // of IBrowserDomainTree into a NETNAME list. // This is done by using a depth first algorithm. // Used in Get50Domains(). HRESULT FlatAdd ( IN DOMAIN_DESC* i_pDomDesc, // Pointer to the Domain Description Structure returned by IBrowserDomainTree::GetDomains() OUT NETNAMELIST* o_pDomainList // Pointer to the list of NETNAME is returned here. ); /*---------------------------------------------------------------------- D O M A I N R E L A T E D F U N C T I O N S ------------------------------------------------------------------------*/ // Returns the list of all 5.0 domains present in the DS Domain Tree only. // The domain names will be in DNS forms HRESULT Get50Domains ( OUT NETNAMELIST* o_pDomains // List of NETNAME structures. ); // Contacts the domain and determines if it is 5.0 Domain. // The domain name can be in DNS form. // returns the netbios name if second parameter is not null. HRESULT Is50Domain ( IN BSTR i_bstrDomain, OUT BSTR* o_bstrDnsDomainName = NULL ); /*---------------------------------------------------------------------- S E R V E R R E L A T E D F U N C T I O N S ------------------------------------------------------------------------*/ // Gets the domain, and OS version of a machine. // If the last parameter in not null the the current // machine name is returned in it. HRESULT GetServerInfo ( IN BSTR i_bstrServer, // NULL means use current server. OUT BSTR *o_pbstrDomain = NULL, OUT BSTR *o_pbstrNetbiosName = NULL, OUT BOOL *o_pbValidDSObject = NULL, OUT BSTR *o_pbstrDnsName = NULL, OUT BSTR *o_pbstrGuid = NULL, OUT BSTR *o_pbstrFQDN = NULL, OUT SUBSCRIBERLIST *o_pFRSRootList = NULL, OUT long *o_lMajorNo = NULL, OUT long *o_lMinorNo = NULL ); HRESULT IsServerRunningDfs ( IN BSTR i_bstrServer ); BOOL CheckReparsePoint(IN BSTR i_bstrServer, IN BSTR i_bstrShare); HRESULT CheckShare ( IN BSTR i_bstrServer, IN BSTR i_bstrShare, OUT BOOL* o_pbFound ); HRESULT CreateShare ( IN BSTR i_bstrServerName, IN BSTR i_bstrShareName, IN BSTR i_bstrComment, IN BSTR i_bstrPath ); // Checks if \\\\x\y\z is on a valid disktree share // and return the path local to the server HRESULT GetFolderInfo ( IN BSTR i_bstrServerName, // IN BSTR i_bstrFolder, // \x\y\z OUT BSTR *o_bstrPath = NULL // return \x\y\z ); void FreeNetNameList(NETNAMELIST *pList); void FreeRootInfoList(ROOTINFOLIST *pList); void FreeSubscriberList(SUBSCRIBERLIST *pList); HRESULT GetLocalComputerName(OUT BSTR* o_pbstrComputerName); HRESULT GetDomainDfsRoots( OUT NETNAMELIST* o_pDfsRootList, IN LPCTSTR i_lpszDomainName ); HRESULT GetMultiDfsRoots( OUT ROOTINFOLIST* o_pDfsRootList, IN LPCTSTR i_lpszScope ); /* bool IsDfsPath ( LPTSTR i_lpszNetPath ); */ HRESULT CheckUNCPath( IN LPCTSTR i_lpszPath ); HRESULT GetUNCPathComponent( IN LPCTSTR i_lpszPath, OUT BSTR* o_pbstrComponent, IN UINT i_nStartBackslashes, // index starting from 1 IN UINT i_nEndBackslashes // index starting from 1 ); BOOL FilterMatch(LPCTSTR lpszString, FILTERDFSLINKS_TYPE lLinkFilterType, LPCTSTR lpszFilter); HRESULT IsHostingDfsRoot(IN BSTR i_bstrServer, OUT BSTR* o_pbstrRootEntryPath = NULL); /* void GetTimeDelta(LPCTSTR str, SYSTEMTIME* ptime0, SYSTEMTIME* ptime1); */ #endif //#ifndef _NETUTILS_H