//************************************************************* // // Copyright (c) Microsoft Corporation 1998 // All rights reserved // // util.hxx // //************************************************************* #ifndef _UTIL_HXX_ #define _UTIL_HXX_ #define HOMESHARE_VARIABLE L"%HOMESHARE%" #define HOMESHARE_VARLEN 11 #define HOMEDRIVE_VARIABLE L"%HOMEDRIVE%" #define HOMEDRIVE_VARLEN 11 #define HOMEPATH_VARIABLE L"%HOMEPATH%" #define HOMEPATH_VARLEN 10 typedef enum tagCSCPinCommands { PinFile, UnpinFile } CSCPINCOMMAND; // //class to keep track of copy failures in a recursive file copy operation // class CCopyFailData { public: CCopyFailData(); ~CCopyFailData(); DWORD RegisterFailure (LPCTSTR pwszSource, LPCTSTR pwszDest); BOOL IsCopyFailure(void); LPCTSTR GetSourceName (void); LPCTSTR GetDestName (void); private: BOOL m_bCopyFailed; DWORD m_dwSourceBufLen; WCHAR * m_pwszSourceName; DWORD m_dwDestBufLen; WCHAR * m_pwszDestName; }; DWORD IsOnNTFS( const WCHAR* pwszPath ); void ModifyAccessAllowedAceCounts ( PACE_HEADER pAce, LONG* pCount, LONG* pContainerCount, LONG* pObjectCount ); DWORD RestrictMyDocsRedirection( HANDLE hToken, HKEY hKeyRoot, BOOL fRestrict ); BOOL GroupInList ( WCHAR * pwszSid, PTOKEN_GROUPS pGroups ); NTSTATUS AllocateAndInitSidFromString ( const WCHAR* lpszSidStr, PSID* ppSid ); NTSTATUS LoadSidAuthFromString ( const WCHAR* pString, PSID_IDENTIFIER_AUTHORITY pSidAuth ); NTSTATUS GetIntFromUnicodeString ( const WCHAR* szNum, ULONG Base, PULONG pValue ); DWORD CALLBACK CopyProgressRoutine ( LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData ); DWORD FullFileCopyW ( const WCHAR* wszSource, const WCHAR* wszDest, BOOL bFailIfExists ); DWORD FullDirCopyW ( const WCHAR* pwszSource, const WCHAR* pwszDest, BOOL bSkipDacl ); DWORD FileInDir ( LPCWSTR pwszFile, LPCWSTR pwszDir, BOOL* pExists ); DWORD ComparePaths ( LPCWSTR pwszSource, LPCWSTR pwszDest, int* pResult ); DWORD CheckIdenticalSpecial ( LPCWSTR pwszSource, LPCWSTR pwszDest, int* pResult ); LPTSTR CheckSlash ( LPTSTR lpDir ); BOOL RegDelnodeRecurse ( HKEY hKeyRoot, LPTSTR lpSubKey ); BOOL RegDelnode ( HKEY hKeyRoot, LPTSTR lpSubKey ); void GetSetOwnerPrivileges ( HANDLE hToken ); DWORD SafeGetPrivateProfileStringW ( const WCHAR * pwszSection, const WCHAR * pwszKey, const WCHAR * pwszDefault, WCHAR ** ppwszReturnedString, DWORD * pSize, const WCHAR * pwszIniFile ); DWORD MySidCopy ( PSID * ppDestSid, PSID pSourceSid ); BOOL GetShareStatus ( const WCHAR * pwszShare, DWORD * pdwStatus, DWORD * pdwPinCount, DWORD * pdwHints ); SHARESTATUS GetCSCStatus ( const WCHAR * pwszPath ); void MoveDirInCSC ( const WCHAR * pwszSource, const WCHAR * pwszDest, const WCHAR * pwszSkipSubdir, SHARESTATUS StatusFrom, SHARESTATUS StatusTo, BOOL bAllowRdrTimeoutForDel, BOOL bAllowRdrTimeoutForRen ); DWORD DoCSCRename ( const WCHAR * pwszSource, const WCHAR * pwszDest, BOOL bOverwrite, BOOL bAllowRdrTimeout ); DWORD DeleteCSCFileTree ( const WCHAR * pwszSource, const WCHAR * pwszSkipSubdir, BOOL bAllowRdrTimeout ); DWORD DeleteCSCFile ( const WCHAR * pwszPath, BOOL bAllowRdrTimeout ); void DisplayStatusMessage ( UINT rid ); DWORD DeleteCSCShareIfEmpty ( LPCTSTR pwszFileName, SHARESTATUS shStatus ); DWORD MergePinInfo ( LPCTSTR pwszSource, LPCTSTR pwszDest, SHARESTATUS StatusFrom, SHARESTATUS StatusTo ); DWORD PinIfNecessary ( const WCHAR * pwszPath, SHARESTATUS shStatus ); DWORD CacheDesktopIni ( LPCTSTR pwszPath, SHARESTATUS shStatus, CSCPINCOMMAND uCommand ); DWORD WINAPI CSCCallbackProc ( LPCTSTR pszName, DWORD dwStatus, DWORD dwHintFlags, DWORD dwPinCount, LPWIN32_FIND_DATA pFind32, DWORD dwReason, DWORD dwParam1, DWORD dwParam2, DWORD_PTR dwContext ); HRESULT UpdateMyPicsShellLinks ( HANDLE hUserToken, const WCHAR * pwszMyPicsLocName ); DWORD LoadLocalizedFolderNames ( void ); DWORD DeleteCachedConfigFiles ( const PGROUP_POLICY_OBJECT pGPOList, CFileDB * pFileDB ); void SimplifyPath ( WCHAR * pwszPath ); DWORD PrecreateUnicodeIniFile ( LPCTSTR lpszFilePath ); BOOL IsPathLocal ( LPCWSTR pwszPath ); DWORD ExpandPathSpecial ( CFileDB * pFileDB, const WCHAR * pwszPath, const WCHAR * pwszUserName, WCHAR * wszExpandedPath, ULONG * pDesiredBufferSize = NULL ); DWORD ExpandHomeDir ( REDIRECTABLE rID, const WCHAR * pwszPath, BOOL bAllowMyPics, WCHAR ** ppwszExpandedPath, const WCHAR * pwszHomedir = NULL ); DWORD ExpandHomeDirPolicyPath ( REDIRECTABLE rID, const WCHAR * pwszPath, BOOL bAllowMyPics, WCHAR ** ppwszExpandedPath, const WCHAR * pwszHomedir = NULL ); BOOL IsHomedirPath ( REDIRECTABLE rID, LPCWSTR pwszPath, BOOL bAllowMyPics ); BOOL IsHomedirPolicyPath ( REDIRECTABLE rID, LPCWSTR pwszPath, BOOL bAllowMyPics ); BOOL HasHomeVariables ( LPCWSTR pwszPath ); DWORD GetWin32ErrFromHResult ( HRESULT hr ); DWORD GetExpandedPath( IN CFileDB* pFileDB, IN WCHAR* wszSourcePath, IN int rID, IN BOOL bAllowMyPics, OUT WCHAR** ppwszExpandedPath); #endif _UTIL_HXX_