360 lines
6 KiB
C++
360 lines
6 KiB
C++
|
//*************************************************************
|
||
|
//
|
||
|
// 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_
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|