Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

341 lines
9.6 KiB

#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_