windows-nt/Source/XPSP1/NT/ds/security/gina/gpext/fdeploy/util.hxx
2020-09-26 16:20:57 +08:00

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_