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

  1. #ifndef _CSHADOW_H_
  2. #define _CSHADOW_H_
  3. #if defined(BITCOPY)
  4. #include <csc_bmpk.h>
  5. #endif // defined(BITCOPY)
  6. #define MAX_SERVER_STRING 32
  7. #define MAX_DOS_NAME 255
  8. #define MAX_SHADOW_NAME_SIZE 32
  9. #define SRET_OK 0
  10. #define SRET_ERROR -1
  11. #define SRET_WILDCARD_HINT 1
  12. #define SRET_OBJECT_HINT 2
  13. #define RNMFLGS_MARK_SOURCE_DELETED 0x00000001
  14. #define RNMFLGS_USE_FIND32_TIMESTAMPS 0x00000002
  15. #define RNMFLGS_USE_FIND32_83NAME 0x00000004
  16. #define RNMFLGS_SAVE_ALIAS 0x00000008
  17. #define RNMFLGS_RETAIN_ALIAS 0x00000010
  18. #define RNMFLGS_MARK_SOURCE_ORPHAN 0x00000020
  19. #define AssertInShadowCrit() Assert(vfInShadowCrit)
  20. typedef int (*LPDELETECALLBACK)(HSHADOW, HSHADOW);
  21. extern LPDELETECALLBACK lpDeleteCBForIoctl;
  22. #define CSHADOW_LIST_TYPE_EXCLUDE 0
  23. #define CSHADOW_LIST_TYPE_CONSERVE_BW 1
  24. #ifdef DEBUG
  25. extern int vfInShadowCrit;
  26. #endif
  27. extern LPVOID lpdbShadow;
  28. BOOL FExistsRecDB(
  29. LPSTR lpszLocation
  30. );
  31. BOOL FExistsShadowDB(
  32. LPSTR lpszLocation
  33. );
  34. int OpenShadowDB(
  35. LPSTR lpszLocation,
  36. LPSTR lpszUserName,
  37. DWORD dwDefDataSizeHigh,
  38. DWORD dwDefDataSizeLow,
  39. DWORD dwClusterSize,
  40. BOOL fReinit,
  41. BOOL *lpfReinited
  42. );
  43. int PUBLIC CloseShadowDB(VOID);
  44. HSHADOW HAllocShadowID(HSHADOW, BOOL);
  45. int FreeShadowID(HSHADOW);
  46. int GetShadowSpaceInfo(LPSHADOWSTORE);
  47. int SetMaxShadowSpace(long nFileSizeHigh, long nFileSizeLow);
  48. int AdjustShadowSpace(long, long, long, long, BOOL);
  49. int AllocShadowSpace(long, long, BOOL);
  50. int FreeShadowSpace(long, long, BOOL);
  51. int PUBLIC GetLocalNameHSHADOW(HSHADOW, LPBYTE, int, BOOL);
  52. int GetWideCharLocalNameHSHADOW(
  53. HSHADOW hShadow,
  54. USHORT *lpBuffer,
  55. LPDWORD lpdwSize,
  56. BOOL fExternal
  57. );
  58. int PUBLIC CreateFileHSHADOW(HSHADOW);
  59. #if defined(BITCOPY)
  60. int OpenFileHSHADOWAndCscBmp(HSHADOW, USHORT, UCHAR, CSCHFILE far *, BOOL, DWORD, LPCSC_BITMAP *);
  61. int OpenCscBmp(HSHADOW, LPCSC_BITMAP *);
  62. #define OpenFileHSHADOW(a, b , c, d) OpenFileHSHADOWAndCscBmp(a, b, c, d, FALSE, 0, NULL)
  63. #endif // defined(BITCOPY)
  64. int GetSizeHSHADOW(HSHADOW, ULONG *, ULONG *);
  65. int GetDosTypeSizeHSHADOW(HSHADOW, ULONG *);
  66. int PUBLIC CreateShadow(HSHADOW hDir, LPFIND32 lpFind32, ULONG uFlags, LPHSHADOW, BOOL *lpfCreated);
  67. BOOL PUBLIC ExcludeFromCreateShadow(USHORT *lpuName, ULONG len, BOOL fCheckExclusionList);
  68. BOOL PUBLIC CheckForBandwidthConservation(USHORT *lpuName, ULONG len);
  69. int PUBLIC CreateShadowInternal( HSHADOW hDir, LPFIND32 lpFind32, ULONG uFlags, LPOTHERINFO lpOI, LPHSHADOW lphNew);
  70. int PUBLIC DeleteShadow(HSHADOW hDir, HSHADOW hShadow);
  71. int PUBLIC TruncateDataHSHADOW (HSHADOW, HSHADOW);
  72. int PUBLIC RenameDataHSHADOW(HSHADOW, HSHADOW);
  73. int PUBLIC GetShadow(HSHADOW hDir, USHORT *lpName, LPHSHADOW lphShadow, LPFIND32 lpFind32, ULONG *lpuShadowStatus, LPOTHERINFO lpOI);
  74. int PUBLIC // ret
  75. GetShadowEx( //
  76. HSHADOW hDir,
  77. USHORT *lpName,
  78. LPHSHADOW lphShadow,
  79. LPFIND32 lpFind32,
  80. ULONG far *lpuShadowStatus,
  81. LPOTHERINFO lpOI,
  82. LPVOID lpSecurityBlob,
  83. LPDWORD lpdwBlobSize
  84. );
  85. int PUBLIC ChkStatusHSHADOW(HSHADOW hDir, HSHADOW hNew, LPFIND32 lpFind32, ULONG far *lpuFlags);
  86. int PUBLIC ChkUpdtStatusHSHADOW(HSHADOW hDir, HSHADOW hNew, LPFIND32 lpFind32, ULONG far *lpuFlags);
  87. int PUBLIC GetShadowInfo(HSHADOW hDir, HSHADOW hNew, LPFIND32 lpFind32, ULONG far *lpuFlags, LPOTHERINFO lpOI);
  88. int PUBLIC SetShadowInfo(HSHADOW hDir, HSHADOW hNew, LPFIND32 lpFind32, ULONG uFlags, ULONG uOp);
  89. int PUBLIC RenameShadow(HSHADOW, HSHADOW, HSHADOW, LPFIND32, ULONG, LPOTHERINFO, ULONG, LPHSHADOW);
  90. int PUBLIC
  91. RenameShadowEx(
  92. HSHADOW hDirFrom,
  93. HSHADOW hShadowFrom,
  94. HSHARE hShareTo,
  95. HSHADOW hDirTo,
  96. LPFIND32 lpFind32To,
  97. ULONG uShadowStatusTo,
  98. LPOTHERINFO lpOI,
  99. ULONG uRenameFlags,
  100. LPVOID lpSecurityBlobTo,
  101. LPDWORD lpdwBlobSizeTo,
  102. LPHSHADOW lphShadowTo
  103. );
  104. int PUBLIC GetShadowInfoEx
  105. (
  106. HSHADOW hDir,
  107. HSHADOW hShadow,
  108. LPFIND32 lpFind32,
  109. ULONG far *lpuStatus,
  110. LPOTHERINFO lpOI,
  111. LPVOID lpSecurityBlob,
  112. LPDWORD lpdwBlobSize
  113. );
  114. int PUBLIC // ret
  115. SetShadowInfoEx( //
  116. HSHADOW hDir,
  117. HSHADOW hShadow,
  118. LPFIND32 lpFind32,
  119. ULONG uFlags,
  120. ULONG uOp,
  121. LPOTHERINFO lpOI,
  122. LPVOID lpSecurityBlob,
  123. LPDWORD lpdwBlobSize
  124. );
  125. int MetaMatch(HSHADOW, LPFIND32, ULONG *, LPHSHADOW, ULONG *, LPOTHERINFO, METAMATCHPROC, LPVOID);
  126. HSHARE PUBLIC HCreateShareObj(USHORT *, LPSHADOWINFO lpSI);
  127. int PUBLIC DestroyHSHARE(HSHARE);
  128. int PUBLIC GetShareFromPath(USHORT *, LPSHADOWINFO);
  129. int PUBLIC GetShareInfo(HSHARE, LPSHAREINFOW, LPSHADOWINFO);
  130. int PUBLIC SetShareStatus(HSHARE, ULONG, ULONG);
  131. int PUBLIC GetShareInfoEx(HSHARE, LPSHAREINFOW, LPSHADOWINFO, LPVOID, LPDWORD);
  132. int PUBLIC SetShareStatusEx(HSHARE, ULONG, ULONG, LPVOID, LPDWORD);
  133. int GetRenameAliasHSHADOW(HSHADOW, HSHADOW, LPHSHADOW, LPHSHADOW);
  134. BOOL IsBusy(HSHADOW hShadow);
  135. int PUBLIC GetAncestorsHSHADOW(HSHADOW, LPHSHADOW, LPHSHARE);
  136. CSC_ENUMCOOKIE PUBLIC BeginPQEnum(VOID);
  137. int PUBLIC SetPriorityHSHADOW(HSHADOW, HSHADOW, ULONG, ULONG);
  138. int PUBLIC GetPriorityHSHADOW(HSHADOW, HSHADOW, ULONG *, ULONG *);
  139. int PUBLIC ChangePriEntryStatusHSHADOW(HSHADOW, HSHADOW, ULONG, ULONG, BOOL, LPOTHERINFO);
  140. int PUBLIC EndPQEnum(CSC_ENUMCOOKIE);
  141. int PUBLIC PrevPriSHADOW(LPVOID);
  142. int PUBLIC NextPriSHADOW(LPVOID);
  143. BOOL
  144. InitializeShadowCritStructures (
  145. void
  146. );
  147. VOID
  148. CleanupShadowCritStructures(
  149. VOID
  150. );
  151. #ifndef CSC_RECORDMANAGER_WINNT
  152. int EnterShadowCrit(void);
  153. int LeaveShadowCrit(void);
  154. #else
  155. #if !DBG
  156. #define ENTERLEAVESHADOWCRIT_SIGNATURE void
  157. #define EnterShadowCrit() {__EnterShadowCrit();}
  158. #define LeaveShadowCrit() {__LeaveShadowCrit();}
  159. #else
  160. #define ENTERLEAVESHADOWCRIT_SIGNATURE PSZ FileName, ULONG LineNumber
  161. #define EnterShadowCrit() {__EnterShadowCrit(__FILE__,__LINE__);}
  162. #define LeaveShadowCrit() {__LeaveShadowCrit(__FILE__,__LINE__);}
  163. #endif
  164. int __EnterShadowCrit(ENTERLEAVESHADOWCRIT_SIGNATURE);
  165. int __LeaveShadowCrit(ENTERLEAVESHADOWCRIT_SIGNATURE);
  166. #endif //#ifdef CSC_RECORDMANAGER_WINNT
  167. int LeaveShadowCritIfThisThreadOwnsIt(void);
  168. #ifdef CSC_RECORDMANAGER_WINNT
  169. extern BOOLEAN MRxSmbIsCscEnabled;
  170. #endif
  171. int GetRootWithChecks(HSHARE, USHORT *, BOOL, LPHSHADOW, LPFIND32, ULONG *, LPOTHERINFO);
  172. int GetShadowWithChecks(HSHADOW, USHORT *, USHORT *, BOOL, LPHSHADOW, LPFIND32, ULONG *, LPOTHERINFO);
  173. int CreateHint(HSHADOW hShadow, LPFIND32 lpFind32, ULONG uHintFlags, ULONG uHintPri, LPHSHADOW lphHint);
  174. int DeleteHint(HSHADOW hShadow, USHORT *lpuHintName, BOOL fClearAll);
  175. int CreateGlobalHint(USHORT *lpuName, ULONG uHintFlags, ULONG uHintPri);
  176. int DeleteGlobalHint(USHORT *lpuName, BOOL fClearAll);
  177. int
  178. FindCreateShare(
  179. USHORT *lpShareName,
  180. BOOL fCreate,
  181. LPSHADOWINFO lpShadowInfo,
  182. BOOL *lpfCreated
  183. );
  184. #ifdef CSC_RECORDMANAGER_WINNT
  185. int FindCreateShareForNt(
  186. PUNICODE_STRING pShareName,
  187. BOOL fCreate,
  188. LPSHADOWINFO lpSI,
  189. BOOL *lpfCreated
  190. );
  191. #endif
  192. int PUBLIC GetSecurityBlobHSHADOW(HSHADOW hDir, HSHADOW hShadow, LPVOID lpBuffer, LPDWORD lpdwBufferSize);
  193. int PUBLIC SetSecurityBlobHSHADOW(HSHADOW hDir, HSHADOW hShadow, LPVOID lpBuffer, LPDWORD lpdwBufferSize);
  194. #ifdef LATER
  195. int PUBLIC GetPathSVROBJ(HSHARE, LPSTR, ULONG);
  196. int PUBLIC GetLinkPropSVROBJ(HSHARE, LPLINKPROP);
  197. int PUBLIC UpdateShadowHSHADOW(HSHADOW);
  198. int PUBLIC ChangeShadowInfo(HSHADOW, LPSHADOWINFO);
  199. #endif //LATER
  200. //prototypes added to remove NT compile errors
  201. CSC_ENUMCOOKIE PUBLIC HBeginPQEnum(VOID);
  202. int PUBLIC EndPQEnum(CSC_ENUMCOOKIE hPQEnum);
  203. int InitOtherInfo(LPOTHERINFO lpOI);
  204. int PathFromHShadow(
  205. HSHADOW hDir,
  206. HSHADOW hShadow,
  207. USHORT *lpBuff,
  208. int cBuff // count of max characters that the buffer can hold
  209. );
  210. int CopyHSHADOW(
  211. HSHADOW hDir,
  212. HSHADOW hShadow,
  213. LPSTR lpszDestinationFile,
  214. ULONG ulATtrib
  215. );
  216. int BeginInodeTransactionHSHADOW(
  217. VOID
  218. );
  219. int EndInodeTransactionHSHADOW(
  220. VOID
  221. );
  222. int
  223. GetSecurityInfosFromBlob(
  224. LPVOID lpvBlob,
  225. DWORD dwBlobSize,
  226. LPSECURITYINFO lpSecInfo,
  227. DWORD *lpdwItemCount
  228. );
  229. int SetList(
  230. USHORT *lpList,
  231. DWORD cbBufferSize,
  232. int typeList
  233. );
  234. int
  235. GetHShareFromUNCString(
  236. USHORT *lpShare,
  237. int cbShare,
  238. int lenSkip,
  239. BOOL fIsShareName,
  240. HSHARE *lphShare,
  241. ULONG *lpulHintFlags
  242. );
  243. int
  244. GetDatabaseLocation(
  245. LPSTR lpszLocation
  246. );
  247. BOOL
  248. EnableHandleCaching(
  249. BOOL fEnable
  250. );
  251. int
  252. RecreateHSHADOW(
  253. HSHADOW hDir,
  254. HSHADOW hShadow,
  255. ULONG ulAttribIn
  256. );
  257. VOID
  258. QuerySparseStaleDetectionCount(
  259. LPDWORD lpcnt
  260. );
  261. VOID
  262. QueryManualFileDetectionCount(
  263. LPDWORD lpcnt
  264. );
  265. ULONG
  266. QueryDatabaseErrorFlags(
  267. VOID
  268. );
  269. DWORD
  270. QueryNameSpaceVersion(
  271. VOID
  272. );
  273. int
  274. HasDescendentsHShadow(
  275. HSHADOW hDir,
  276. HSHADOW hShadow,
  277. BOOLEAN *lpfDescendents
  278. );
  279. int
  280. SetDatabaseStatus(
  281. ULONG ulStatus,
  282. ULONG uMask
  283. );
  284. int CopyOtherInfoToShadowInfo(
  285. LPOTHERINFO lpOI,
  286. LPSHADOWINFO lpShadowInfo
  287. );
  288. #endif // #ifndef _CSHADOW_H_