|
|
#ifndef _CSHADOW_H_
#define _CSHADOW_H_
#if defined(BITCOPY)
#include <csc_bmpk.h>
#endif // defined(BITCOPY)
#define MAX_SERVER_STRING 32
#define MAX_DOS_NAME 255
#define MAX_SHADOW_NAME_SIZE 32
#define SRET_OK 0
#define SRET_ERROR -1
#define SRET_WILDCARD_HINT 1
#define SRET_OBJECT_HINT 2
#define RNMFLGS_MARK_SOURCE_DELETED 0x00000001
#define RNMFLGS_USE_FIND32_TIMESTAMPS 0x00000002
#define RNMFLGS_USE_FIND32_83NAME 0x00000004
#define RNMFLGS_SAVE_ALIAS 0x00000008
#define RNMFLGS_RETAIN_ALIAS 0x00000010
#define RNMFLGS_MARK_SOURCE_ORPHAN 0x00000020
#define AssertInShadowCrit() Assert(vfInShadowCrit)
typedef int (*LPDELETECALLBACK)(HSHADOW, HSHADOW); extern LPDELETECALLBACK lpDeleteCBForIoctl;
#define CSHADOW_LIST_TYPE_EXCLUDE 0
#define CSHADOW_LIST_TYPE_CONSERVE_BW 1
#ifdef DEBUG
extern int vfInShadowCrit; #endif
extern LPVOID lpdbShadow;
BOOL FExistsRecDB( LPSTR lpszLocation );
BOOL FExistsShadowDB( LPSTR lpszLocation );
int OpenShadowDB( LPSTR lpszLocation, LPSTR lpszUserName, DWORD dwDefDataSizeHigh, DWORD dwDefDataSizeLow, DWORD dwClusterSize, BOOL fReinit, BOOL *lpfReinited );
int PUBLIC CloseShadowDB(VOID);
HSHADOW HAllocShadowID(HSHADOW, BOOL); int FreeShadowID(HSHADOW); int GetShadowSpaceInfo(LPSHADOWSTORE); int SetMaxShadowSpace(long nFileSizeHigh, long nFileSizeLow); int AdjustShadowSpace(long, long, long, long, BOOL); int AllocShadowSpace(long, long, BOOL); int FreeShadowSpace(long, long, BOOL); int PUBLIC GetLocalNameHSHADOW(HSHADOW, LPBYTE, int, BOOL); int GetWideCharLocalNameHSHADOW( HSHADOW hShadow, USHORT *lpBuffer, LPDWORD lpdwSize, BOOL fExternal ); int PUBLIC CreateFileHSHADOW(HSHADOW);
#if defined(BITCOPY)
int OpenFileHSHADOWAndCscBmp(HSHADOW, USHORT, UCHAR, CSCHFILE far *, BOOL, DWORD, LPCSC_BITMAP *); int OpenCscBmp(HSHADOW, LPCSC_BITMAP *); #define OpenFileHSHADOW(a, b , c, d) OpenFileHSHADOWAndCscBmp(a, b, c, d, FALSE, 0, NULL)
#endif // defined(BITCOPY)
int GetSizeHSHADOW(HSHADOW, ULONG *, ULONG *); int GetDosTypeSizeHSHADOW(HSHADOW, ULONG *); int PUBLIC CreateShadow(HSHADOW hDir, LPFIND32 lpFind32, ULONG uFlags, LPHSHADOW, BOOL *lpfCreated); BOOL PUBLIC ExcludeFromCreateShadow(USHORT *lpuName, ULONG len, BOOL fCheckExclusionList); BOOL PUBLIC CheckForBandwidthConservation(USHORT *lpuName, ULONG len); int PUBLIC CreateShadowInternal( HSHADOW hDir, LPFIND32 lpFind32, ULONG uFlags, LPOTHERINFO lpOI, LPHSHADOW lphNew); int PUBLIC DeleteShadow(HSHADOW hDir, HSHADOW hShadow); int PUBLIC TruncateDataHSHADOW (HSHADOW, HSHADOW); int PUBLIC RenameDataHSHADOW(HSHADOW, HSHADOW); int PUBLIC GetShadow(HSHADOW hDir, USHORT *lpName, LPHSHADOW lphShadow, LPFIND32 lpFind32, ULONG *lpuShadowStatus, LPOTHERINFO lpOI); int PUBLIC // ret
GetShadowEx( //
HSHADOW hDir, USHORT *lpName, LPHSHADOW lphShadow, LPFIND32 lpFind32, ULONG far *lpuShadowStatus, LPOTHERINFO lpOI, LPVOID lpSecurityBlob, LPDWORD lpdwBlobSize ); int PUBLIC ChkStatusHSHADOW(HSHADOW hDir, HSHADOW hNew, LPFIND32 lpFind32, ULONG far *lpuFlags); int PUBLIC ChkUpdtStatusHSHADOW(HSHADOW hDir, HSHADOW hNew, LPFIND32 lpFind32, ULONG far *lpuFlags); int PUBLIC GetShadowInfo(HSHADOW hDir, HSHADOW hNew, LPFIND32 lpFind32, ULONG far *lpuFlags, LPOTHERINFO lpOI); int PUBLIC SetShadowInfo(HSHADOW hDir, HSHADOW hNew, LPFIND32 lpFind32, ULONG uFlags, ULONG uOp); int PUBLIC RenameShadow(HSHADOW, HSHADOW, HSHADOW, LPFIND32, ULONG, LPOTHERINFO, ULONG, LPHSHADOW); int PUBLIC RenameShadowEx( HSHADOW hDirFrom, HSHADOW hShadowFrom, HSHARE hShareTo, HSHADOW hDirTo, LPFIND32 lpFind32To, ULONG uShadowStatusTo, LPOTHERINFO lpOI, ULONG uRenameFlags, LPVOID lpSecurityBlobTo, LPDWORD lpdwBlobSizeTo, LPHSHADOW lphShadowTo );
int PUBLIC GetShadowInfoEx ( HSHADOW hDir, HSHADOW hShadow, LPFIND32 lpFind32, ULONG far *lpuStatus, LPOTHERINFO lpOI, LPVOID lpSecurityBlob, LPDWORD lpdwBlobSize );
int PUBLIC // ret
SetShadowInfoEx( //
HSHADOW hDir, HSHADOW hShadow, LPFIND32 lpFind32, ULONG uFlags, ULONG uOp, LPOTHERINFO lpOI, LPVOID lpSecurityBlob, LPDWORD lpdwBlobSize );
int MetaMatch(HSHADOW, LPFIND32, ULONG *, LPHSHADOW, ULONG *, LPOTHERINFO, METAMATCHPROC, LPVOID);
HSHARE PUBLIC HCreateShareObj(USHORT *, LPSHADOWINFO lpSI); int PUBLIC DestroyHSHARE(HSHARE); int PUBLIC GetShareFromPath(USHORT *, LPSHADOWINFO); int PUBLIC GetShareInfo(HSHARE, LPSHAREINFOW, LPSHADOWINFO); int PUBLIC SetShareStatus(HSHARE, ULONG, ULONG); int PUBLIC GetShareInfoEx(HSHARE, LPSHAREINFOW, LPSHADOWINFO, LPVOID, LPDWORD); int PUBLIC SetShareStatusEx(HSHARE, ULONG, ULONG, LPVOID, LPDWORD); int GetRenameAliasHSHADOW(HSHADOW, HSHADOW, LPHSHADOW, LPHSHADOW); BOOL IsBusy(HSHADOW hShadow); int PUBLIC GetAncestorsHSHADOW(HSHADOW, LPHSHADOW, LPHSHARE); CSC_ENUMCOOKIE PUBLIC BeginPQEnum(VOID); int PUBLIC SetPriorityHSHADOW(HSHADOW, HSHADOW, ULONG, ULONG); int PUBLIC GetPriorityHSHADOW(HSHADOW, HSHADOW, ULONG *, ULONG *); int PUBLIC ChangePriEntryStatusHSHADOW(HSHADOW, HSHADOW, ULONG, ULONG, BOOL, LPOTHERINFO); int PUBLIC EndPQEnum(CSC_ENUMCOOKIE); int PUBLIC PrevPriSHADOW(LPVOID); int PUBLIC NextPriSHADOW(LPVOID);
BOOL InitializeShadowCritStructures ( void ); VOID CleanupShadowCritStructures( VOID );
#ifndef CSC_RECORDMANAGER_WINNT
int EnterShadowCrit(void); int LeaveShadowCrit(void); #else
#if !DBG
#define ENTERLEAVESHADOWCRIT_SIGNATURE void
#define EnterShadowCrit() {__EnterShadowCrit();}
#define LeaveShadowCrit() {__LeaveShadowCrit();}
#else
#define ENTERLEAVESHADOWCRIT_SIGNATURE PSZ FileName, ULONG LineNumber
#define EnterShadowCrit() {__EnterShadowCrit(__FILE__,__LINE__);}
#define LeaveShadowCrit() {__LeaveShadowCrit(__FILE__,__LINE__);}
#endif
int __EnterShadowCrit(ENTERLEAVESHADOWCRIT_SIGNATURE); int __LeaveShadowCrit(ENTERLEAVESHADOWCRIT_SIGNATURE); #endif //#ifdef CSC_RECORDMANAGER_WINNT
int LeaveShadowCritIfThisThreadOwnsIt(void); #ifdef CSC_RECORDMANAGER_WINNT
extern BOOLEAN MRxSmbIsCscEnabled; #endif
int GetRootWithChecks(HSHARE, USHORT *, BOOL, LPHSHADOW, LPFIND32, ULONG *, LPOTHERINFO); int GetShadowWithChecks(HSHADOW, USHORT *, USHORT *, BOOL, LPHSHADOW, LPFIND32, ULONG *, LPOTHERINFO);
int CreateHint(HSHADOW hShadow, LPFIND32 lpFind32, ULONG uHintFlags, ULONG uHintPri, LPHSHADOW lphHint); int DeleteHint(HSHADOW hShadow, USHORT *lpuHintName, BOOL fClearAll); int CreateGlobalHint(USHORT *lpuName, ULONG uHintFlags, ULONG uHintPri); int DeleteGlobalHint(USHORT *lpuName, BOOL fClearAll); int FindCreateShare( USHORT *lpShareName, BOOL fCreate, LPSHADOWINFO lpShadowInfo, BOOL *lpfCreated );
#ifdef CSC_RECORDMANAGER_WINNT
int FindCreateShareForNt( PUNICODE_STRING pShareName, BOOL fCreate, LPSHADOWINFO lpSI, BOOL *lpfCreated ); #endif
int PUBLIC GetSecurityBlobHSHADOW(HSHADOW hDir, HSHADOW hShadow, LPVOID lpBuffer, LPDWORD lpdwBufferSize); int PUBLIC SetSecurityBlobHSHADOW(HSHADOW hDir, HSHADOW hShadow, LPVOID lpBuffer, LPDWORD lpdwBufferSize);
#ifdef LATER
int PUBLIC GetPathSVROBJ(HSHARE, LPSTR, ULONG); int PUBLIC GetLinkPropSVROBJ(HSHARE, LPLINKPROP); int PUBLIC UpdateShadowHSHADOW(HSHADOW); int PUBLIC ChangeShadowInfo(HSHADOW, LPSHADOWINFO); #endif //LATER
//prototypes added to remove NT compile errors
CSC_ENUMCOOKIE PUBLIC HBeginPQEnum(VOID); int PUBLIC EndPQEnum(CSC_ENUMCOOKIE hPQEnum); int InitOtherInfo(LPOTHERINFO lpOI);
int PathFromHShadow( HSHADOW hDir, HSHADOW hShadow, USHORT *lpBuff, int cBuff // count of max characters that the buffer can hold
);
int CopyHSHADOW( HSHADOW hDir, HSHADOW hShadow, LPSTR lpszDestinationFile, ULONG ulATtrib );
int BeginInodeTransactionHSHADOW( VOID );
int EndInodeTransactionHSHADOW( VOID );
int GetSecurityInfosFromBlob( LPVOID lpvBlob, DWORD dwBlobSize, LPSECURITYINFO lpSecInfo, DWORD *lpdwItemCount );
int SetList( USHORT *lpList, DWORD cbBufferSize, int typeList );
int GetHShareFromUNCString( USHORT *lpShare, int cbShare, int lenSkip, BOOL fIsShareName, HSHARE *lphShare, ULONG *lpulHintFlags );
int GetDatabaseLocation( LPSTR lpszLocation );
BOOL EnableHandleCaching( BOOL fEnable );
int RecreateHSHADOW( HSHADOW hDir, HSHADOW hShadow, ULONG ulAttribIn );
VOID QuerySparseStaleDetectionCount( LPDWORD lpcnt );
VOID QueryManualFileDetectionCount( LPDWORD lpcnt );
ULONG QueryDatabaseErrorFlags( VOID );
DWORD QueryNameSpaceVersion( VOID ); int HasDescendentsHShadow( HSHADOW hDir, HSHADOW hShadow, BOOLEAN *lpfDescendents ); int SetDatabaseStatus( ULONG ulStatus, ULONG uMask );
int CopyOtherInfoToShadowInfo( LPOTHERINFO lpOI, LPSHADOWINFO lpShadowInfo );
#endif // #ifndef _CSHADOW_H_
|