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.

577 lines
45 KiB

  1. /*++
  2. Copyright (c) 1991 Microsoft Corporation
  3. Module Name:
  4. lockorder.h
  5. Abstract:
  6. This module defines all data associated with lock order enforcement.
  7. If you define a new resource add it to the NTFS_RESOURCE_NAME enum. If you hit
  8. an unknown state transition run tests\analyze which shows what makes up the state
  9. Then see if you're releasing / acquiring the resource and if its a safe or unsafe transition.
  10. An unsafe transition is a non-blocking one. If the transition makes sense then you should add
  11. it to one of 4 tables. 1st it may be neccessary to create a new state. Scan the list
  12. which is organized in a mostly ordered fashion to make sure the state doesn't already
  13. exist. Then if the transition is a normal 2 way one add it to the OwnershipTransitionTable.
  14. If its a release only transition (usually caused by out of order resource releases) add it
  15. to the OwnershipTransitionTableRelease. If its an acquire only transiton add it to
  16. OwnershipTransitionTableAcquire. These only included transitions involving the wild card
  17. resource NtfsResourceAny and are used to model the ExclusiveVcb resource chains. Finally if
  18. its only an unsafe transition ex. acquire parent and then acquire child add it to
  19. the OwnershipTransitionTableUnsafe. After you're donw recompile analyze and check to
  20. make sure it doesn't warn about anything invalid in the total rule set. Finally compile with
  21. NTFSDBG defined and the new rule will be in place.
  22. Author:
  23. Benjamin Leis [benl] 20-Mar-2000
  24. Revision History:
  25. --*/
  26. #ifndef _NTFSLOCKORDER_
  27. #define _NTFSLOCKORDER_
  28. //
  29. // Data for the lock order enforcement package. This includes names for resources
  30. // and the resource ownership states
  31. //
  32. typedef enum _NTFS_RESOURCE_NAME {
  33. NtfsResourceAny = 0x1,
  34. NtfsResourceExVcb = 0x2,
  35. NtfsResourceSharedVcb = 0x4,
  36. NtfsResourceVolume = 0x8,
  37. NtfsResourceFile = 0x10,
  38. NtfsResourceRootDir = 0x20,
  39. NtfsResourceObjectIdTable = 0x40,
  40. NtfsResourceReparseTable = 0x80,
  41. NtfsResourceQuotaTable = 0x100,
  42. NtfsResourceSecure = 0x200,
  43. NtfsResourceExtendDir = 0x400,
  44. NtfsResourceBadClust = 0x800,
  45. NtfsResourceUpCase = 0x1000,
  46. NtfsResourceAttrDefTable = 0x2000,
  47. NtfsResourceLogFile = 0x4000,
  48. NtfsResourceMft2 = 0x8000,
  49. NtfsResourceMft = 0x10000,
  50. NtfsResourceUsnJournal = 0x20000,
  51. NtfsResourceBitmap = 0x40000,
  52. NtfsResourceBoot = 0x80000,
  53. NtfsResourceMaximum = 0x100000
  54. } NTFS_RESOURCE_NAME, *PNTFS_RESOURCE_NAME;
  55. typedef enum _NTFS_OWNERSHIP_STATE {
  56. None = 0,
  57. NtfsOwns_All = NtfsResourceMaximum - 1,
  58. NtfsOwns_File = NtfsResourceFile,
  59. NtfsOwns_ExVcb = NtfsResourceExVcb,
  60. NtfsOwns_Vcb = NtfsResourceSharedVcb,
  61. NtfsOwns_BadClust = NtfsResourceBadClust,
  62. NtfsOwns_Boot = NtfsResourceBoot,
  63. NtfsOwns_Bitmap = NtfsResourceBitmap,
  64. NtfsOwns_Extend = NtfsResourceExtendDir,
  65. NtfsOwns_Journal = NtfsResourceUsnJournal,
  66. NtfsOwns_LogFile = NtfsResourceLogFile,
  67. NtfsOwns_Mft = NtfsResourceMft,
  68. NtfsOwns_Mft2 = NtfsResourceMft2,
  69. NtfsOwns_ObjectId = NtfsResourceObjectIdTable,
  70. NtfsOwns_Quota = NtfsResourceQuotaTable,
  71. NtfsOwns_Reparse = NtfsResourceReparseTable,
  72. NtfsOwns_Root = NtfsResourceRootDir,
  73. NtfsOwns_Secure = NtfsResourceSecure,
  74. NtfsOwns_Upcase = NtfsResourceUpCase,
  75. NtfsOwns_Volume = NtfsResourceVolume,
  76. NtfsOwns_Root_File = NtfsResourceRootDir | NtfsResourceFile,
  77. NtfsOwns_Root_File_Bitmap = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceBitmap,
  78. NtfsOwns_Root_File_ObjectId = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable,
  79. NtfsOwns_Root_File_ObjectId_Extend = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceExtendDir,
  80. NtfsOwns_Root_File_ObjectId_Extend_Bitmap = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceExtendDir | NtfsResourceBitmap,
  81. NtfsOwns_Root_File_ObjectId_Secure = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceSecure,
  82. NtfsOwns_Root_File_ObjectId_Secure_Bitmap = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceSecure | NtfsResourceBitmap,
  83. NtfsOwns_Root_File_Quota = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable,
  84. NtfsOwns_Root_BadClust = NtfsResourceRootDir | NtfsResourceBadClust,
  85. NtfsOwns_Root_Bitmap = NtfsResourceRootDir | NtfsResourceBitmap,
  86. NtfsOwns_Root_Extend = NtfsResourceRootDir | NtfsResourceExtendDir,
  87. NtfsOwns_Root_LogFile = NtfsResourceRootDir | NtfsResourceLogFile,
  88. NtfsOwns_Root_Mft2 = NtfsResourceRootDir | NtfsResourceMft2,
  89. NtfsOwns_Root_Quota = NtfsResourceRootDir | NtfsResourceQuotaTable,
  90. NtfsOwns_Root_ObjectId = NtfsResourceRootDir | NtfsResourceObjectIdTable,
  91. NtfsOwns_Root_Upcase = NtfsResourceRootDir | NtfsResourceUpCase,
  92. NtfsOwns_Root_Secure = NtfsResourceRootDir | NtfsResourceSecure,
  93. NtfsOwns_Root_Mft = NtfsResourceRootDir | NtfsResourceMft,
  94. NtfsOwns_Root_Mft_Bitmap = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceBitmap,
  95. NtfsOwns_Root_Mft_File = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile,
  96. NtfsOwns_Root_Mft_File_Bitmap = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceBitmap,
  97. NtfsOwns_Root_Mft_File_Quota = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable,
  98. NtfsOwns_Root_Mft_File_Journal = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal,
  99. NtfsOwns_Root_Mft_File_Journal_Bitmap = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal | NtfsResourceBitmap,
  100. NtfsOwns_Root_Mft_File_ObjectId = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable,
  101. NtfsOwns_Root_Mft_File_ObjectId_Quota = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  102. NtfsOwns_Root_Mft_Journal = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceUsnJournal,
  103. NtfsOwns_Root_Mft_Journal_Bitmap = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBitmap,
  104. NtfsOwns_Root_Mft_ObjectId = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceObjectIdTable,
  105. NtfsOwns_Root_Mft_Quota = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceQuotaTable,
  106. NtfsOwns_Vcb_BadClust = NtfsResourceSharedVcb | NtfsResourceBadClust,
  107. NtfsOwns_Vcb_Bitmap = NtfsResourceSharedVcb | NtfsResourceBitmap,
  108. NtfsOwns_Vcb_Boot = NtfsResourceSharedVcb | NtfsResourceBoot,
  109. NtfsOwns_Vcb_Journal = NtfsResourceSharedVcb | NtfsResourceUsnJournal,
  110. NtfsOwns_Vcb_LogFile = NtfsResourceSharedVcb | NtfsResourceLogFile,
  111. NtfsOwns_Vcb_Quota = NtfsResourceSharedVcb | NtfsResourceQuotaTable,
  112. NtfsOwns_Vcb_Reparse = NtfsResourceSharedVcb | NtfsResourceReparseTable,
  113. NtfsOwns_Vcb_Root = NtfsResourceSharedVcb | NtfsResourceRootDir,
  114. NtfsOwns_Vcb_Upcase = NtfsResourceSharedVcb | NtfsResourceUpCase,
  115. NtfsOwns_Vcb_Volume = NtfsResourceSharedVcb | NtfsResourceVolume,
  116. NtfsOwns_Vcb_Mft = NtfsResourceSharedVcb | NtfsResourceMft,
  117. NtfsOwns_Vcb_Mft_BadClust = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceBadClust,
  118. NtfsOwns_Vcb_Mft_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceBitmap,
  119. NtfsOwns_Vcb_Mft_Boot = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceBoot,
  120. NtfsOwns_Vcb_Mft_LogFile = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceLogFile,
  121. NtfsOwns_Vcb_Mft_Mft2 = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceMft2,
  122. NtfsOwns_Vcb_Mft_Upcase = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceUpCase,
  123. NtfsOwns_Vcb_Mft_Secure = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceSecure,
  124. NtfsOwns_Vcb_Mft_Volume = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceVolume,
  125. NtfsOwns_Vcb_Mft_Volume_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceVolume | NtfsResourceBitmap,
  126. NtfsOwns_Vcb_Mft_Volume_Bitmap_Boot = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceVolume | NtfsResourceBitmap | NtfsResourceBoot,
  127. NtfsOwns_Vcb_Mft_Extend = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceExtendDir,
  128. NtfsOwns_Vcb_Mft_File = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile,
  129. NtfsOwns_Vcb_Mft_File_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceBitmap,
  130. NtfsOwns_Vcb_Mft_File_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal,
  131. NtfsOwns_Vcb_Mft_File_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal | NtfsResourceBitmap,
  132. NtfsOwns_Vcb_Mft_File_Secure = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceSecure,
  133. NtfsOwns_Vcb_Mft_File_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable,
  134. NtfsOwns_Vcb_Mft_File_Quota_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceUsnJournal,
  135. NtfsOwns_Vcb_Mft_File_Quota_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceUsnJournal | NtfsResourceBitmap,
  136. NtfsOwns_Vcb_Mft_File_Quota_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap,
  137. NtfsOwns_Vcb_Mft_File_Reparse = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable,
  138. NtfsOwns_Vcb_Mft_File_Reparse_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceQuotaTable,
  139. NtfsOwns_Vcb_Mft_File_Reparse_Quota_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceQuotaTable | NtfsResourceUsnJournal,
  140. NtfsOwns_Vcb_Mft_File_Reparse_Quota_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceQuotaTable | NtfsResourceUsnJournal | NtfsResourceBitmap,
  141. NtfsOwns_Vcb_Mft_File_Reparse_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceUsnJournal,
  142. NtfsOwns_Vcb_Mft_File_ObjectId = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable,
  143. NtfsOwns_Vcb_Mft_File_ObjectId_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  144. NtfsOwns_Vcb_Mft_File_ObjectId_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  145. NtfsOwns_Vcb_Mft_File_ObjectId_Quota_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable | NtfsResourceUsnJournal,
  146. NtfsOwns_Vcb_Mft_File_ObjectId_Reparse = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceReparseTable,
  147. NtfsOwns_Vcb_Mft_File_ObjectId_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceUsnJournal,
  148. NtfsOwns_Vcb_Mft_File_ObjectId_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceUsnJournal | NtfsResourceBitmap,
  149. NtfsOwns_Vcb_Mft_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceUsnJournal,
  150. NtfsOwns_Vcb_Mft_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBitmap,
  151. NtfsOwns_Vcb_Mft_Root = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir,
  152. NtfsOwns_Vcb_Mft_Root_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceQuotaTable,
  153. NtfsOwns_Vcb_Mft_Root_Quota_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceQuotaTable | NtfsResourceUsnJournal,
  154. NtfsOwns_Vcb_Mft_Root_Quota_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceQuotaTable | NtfsResourceUsnJournal | NtfsResourceBitmap,
  155. NtfsOwns_Vcb_Mft_Root_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceUsnJournal,
  156. NtfsOwns_Vcb_Mft_Root_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceUsnJournal | NtfsResourceBitmap,
  157. NtfsOwns_Vcb_Mft_Root_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceBitmap,
  158. NtfsOwns_Vcb_Mft_Root_File = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile,
  159. NtfsOwns_Vcb_Mft_Root_File_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceBitmap,
  160. NtfsOwns_Vcb_Mft_Root_File_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceUsnJournal,
  161. NtfsOwns_Vcb_Mft_Root_File_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceUsnJournal | NtfsResourceBitmap,
  162. NtfsOwns_Vcb_Mft_Root_File_ObjectId = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable,
  163. NtfsOwns_Vcb_Mft_Root_File_ObjectId_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceUsnJournal,
  164. NtfsOwns_Vcb_Mft_Root_File_ObjectId_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  165. NtfsOwns_Vcb_Mft_Root_File_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable,
  166. NtfsOwns_Vcb_Mft_Root_File_Quota_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap,
  167. NtfsOwns_Vcb_Mft_Root_File_Quota_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceUsnJournal,
  168. NtfsOwns_Vcb_Mft_Root_File_Quota_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceUsnJournal | NtfsResourceBitmap,
  169. NtfsOwns_Vcb_Mft_Root_ObjectId = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceObjectIdTable,
  170. NtfsOwns_Vcb_Mft_ObjectId = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceObjectIdTable,
  171. NtfsOwns_Vcb_Mft_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceQuotaTable,
  172. NtfsOwns_Vcb_Mft_Reparse = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceReparseTable,
  173. NtfsOwns_Vcb_Extend = NtfsResourceSharedVcb | NtfsResourceExtendDir,
  174. NtfsOwns_Vcb_Extend_Reparse = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceReparseTable,
  175. NtfsOwns_Vcb_Extend_Reparse_Secure = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceReparseTable | NtfsResourceSecure,
  176. NtfsOwns_Vcb_Extend_ObjectId = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceObjectIdTable,
  177. NtfsOwns_Vcb_Extend_ObjectId_Secure = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceObjectIdTable | NtfsResourceSecure,
  178. NtfsOwns_Vcb_Extend_Quota = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceQuotaTable,
  179. NtfsOwns_Vcb_Extend_Journal = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceUsnJournal,
  180. NtfsOwns_Vcb_ObjectId = NtfsResourceSharedVcb | NtfsResourceObjectIdTable,
  181. NtfsOwns_Vcb_Mft2 = NtfsResourceSharedVcb | NtfsResourceMft2,
  182. NtfsOwns_Vcb_Secure = NtfsResourceSharedVcb | NtfsResourceSecure,
  183. NtfsOwns_Vcb_Root_Bitmap = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceBitmap,
  184. NtfsOwns_Vcb_Root_Mft2 = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceMft2,
  185. NtfsOwns_Vcb_Root_Upcase = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceUpCase,
  186. NtfsOwns_Vcb_Root_Extend = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceExtendDir,
  187. NtfsOwns_Vcb_Root_Quota = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceQuotaTable,
  188. NtfsOwns_Vcb_Root_ObjectId = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceObjectIdTable,
  189. NtfsOwns_Vcb_Root_Secure = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceSecure,
  190. NtfsOwns_Vcb_Root_Secure_Bitmap = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceSecure | NtfsResourceBitmap,
  191. NtfsOwns_Vcb_Root_Boot = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceBoot,
  192. NtfsOwns_Vcb_Root_LogFile = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceLogFile,
  193. NtfsOwns_Vcb_Root_BadClust = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceBadClust,
  194. NtfsOwns_Vcb_Root_File = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile,
  195. NtfsOwns_Vcb_Root_File_Secure = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceSecure,
  196. NtfsOwns_Vcb_Root_File_Bitmap = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceBitmap,
  197. NtfsOwns_Vcb_Root_File_ObjectId = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable,
  198. NtfsOwns_Vcb_Root_File_ObjectId_Quota = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  199. NtfsOwns_Vcb_Root_File_ObjectId_Bitmap = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  200. NtfsOwns_Vcb_Root_File_Quota = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable,
  201. NtfsOwns_Vcb_Root_File_Quota_Bitmap = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap,
  202. NtfsOwns_Vcb_File = NtfsResourceSharedVcb | NtfsResourceFile,
  203. NtfsOwns_Vcb_File_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceBitmap,
  204. NtfsOwns_Vcb_File_Secure = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceSecure,
  205. NtfsOwns_Vcb_File_Extend = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceExtendDir,
  206. NtfsOwns_Vcb_File_ObjectId = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceObjectIdTable,
  207. NtfsOwns_Vcb_File_ObjectId_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  208. NtfsOwns_Vcb_File_ObjectId_Quota = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  209. NtfsOwns_Vcb_File_ObjectId_Reparse = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceReparseTable,
  210. NtfsOwns_Vcb_File_ObjectId_Reparse_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceReparseTable | NtfsResourceBitmap,
  211. NtfsOwns_Vcb_File_Quota = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceQuotaTable,
  212. NtfsOwns_Vcb_File_Quota_Secure = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceSecure,
  213. NtfsOwns_Vcb_File_Quota_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap,
  214. NtfsOwns_Vcb_File_Reparse = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceReparseTable,
  215. NtfsOwns_Vcb_File_Reparse_Quota = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceQuotaTable,
  216. NtfsOwns_Vcb_File_Reparse_Quota_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceQuotaTable | NtfsResourceBitmap,
  217. NtfsOwns_Vcb_File_Reparse_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceBitmap,
  218. NtfsOwns_Vcb_File_Extend_Secure = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceExtendDir | NtfsResourceSecure,
  219. NtfsOwns_Vcb_File_Secure_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceSecure | NtfsResourceBitmap,
  220. NtfsOwns_Extend_Reparse = NtfsResourceExtendDir | NtfsResourceReparseTable,
  221. NtfsOwns_Extend_ObjectId = NtfsResourceExtendDir | NtfsResourceObjectIdTable,
  222. NtfsOwns_Extend_Journal = NtfsResourceExtendDir | NtfsResourceUsnJournal,
  223. NtfsOwns_Extend_Quota = NtfsResourceExtendDir | NtfsResourceQuotaTable,
  224. NtfsOwns_Mft_Bitmap = NtfsResourceMft | NtfsResourceBitmap,
  225. NtfsOwns_Mft_Journal = NtfsResourceMft | NtfsResourceUsnJournal,
  226. NtfsOwns_Mft_Journal_Bitmap = NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBitmap,
  227. NtfsOwns_Mft_Volume = NtfsResourceMft | NtfsResourceVolume,
  228. NtfsOwns_Mft_Volume_Bitmap = NtfsResourceMft | NtfsResourceVolume | NtfsResourceBitmap,
  229. NtfsOwns_Mft_Extend = NtfsResourceMft | NtfsResourceExtendDir,
  230. NtfsOwns_Mft_Extend_Journal = NtfsResourceMft | NtfsResourceExtendDir | NtfsResourceUsnJournal,
  231. NtfsOwns_Mft_File = NtfsResourceMft | NtfsResourceFile,
  232. NtfsOwns_Mft_File_Journal = NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal,
  233. NtfsOwns_Mft_File_Journal_Bitmap = NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal | NtfsResourceBitmap,
  234. NtfsOwns_Mft_File_Bitmap = NtfsResourceMft | NtfsResourceFile | NtfsResourceBitmap,
  235. NtfsOwns_Mft_File_Quota = NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable,
  236. NtfsOwns_Mft_File_Quota_Bitmap = NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap,
  237. NtfsOwns_Mft_File_Quota_Journal = NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceUsnJournal,
  238. NtfsOwns_Mft_File_Quota_Journal_Bitmap = NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceUsnJournal | NtfsResourceBitmap,
  239. NtfsOwns_Mft_File_Reparse = NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable,
  240. NtfsOwns_Mft_File_Reparse_Journal = NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceUsnJournal,
  241. NtfsOwns_Mft_File_Reparse_Journal_Bitmap = NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceUsnJournal | NtfsResourceBitmap,
  242. NtfsOwns_Mft_File_Reparse_Quota = NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceQuotaTable,
  243. NtfsOwns_Mft_File_Secure = NtfsResourceMft | NtfsResourceFile | NtfsResourceSecure,
  244. NtfsOwns_Mft_File_Secure_Journal = NtfsResourceMft | NtfsResourceFile | NtfsResourceSecure | NtfsResourceUsnJournal,
  245. NtfsOwns_Mft_File_ObjectId = NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable,
  246. NtfsOwns_Mft_File_ObjectId_Quota = NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  247. NtfsOwns_Mft_File_ObjectId_Quota_Journal = NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable | NtfsResourceUsnJournal,
  248. NtfsOwns_Mft_File_ObjectId_Quota_Journal_Bitmap = NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable | NtfsResourceUsnJournal | NtfsResourceBitmap,
  249. NtfsOwns_Mft_File_ObjectId_Reparse = NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceReparseTable,
  250. NtfsOwns_Mft_File_ObjectId_Journal = NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceUsnJournal,
  251. NtfsOwns_Mft_ObjectId = NtfsResourceMft | NtfsResourceObjectIdTable,
  252. NtfsOwns_Mft_ObjectId_Journal = NtfsResourceMft | NtfsResourceObjectIdTable | NtfsResourceUsnJournal,
  253. NtfsOwns_Mft_ObjectId_Bitmap = NtfsResourceMft | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  254. NtfsOwns_Mft_Upcase = NtfsResourceMft | NtfsResourceUpCase,
  255. NtfsOwns_Mft_Upcase_Bitmap = NtfsResourceMft | NtfsResourceUpCase | NtfsResourceBitmap,
  256. NtfsOwns_Mft_Secure = NtfsResourceMft | NtfsResourceSecure,
  257. NtfsOwns_Mft_Secure_Bitmap = NtfsResourceMft | NtfsResourceSecure | NtfsResourceBitmap,
  258. NtfsOwns_Mft_Quota = NtfsResourceMft | NtfsResourceQuotaTable,
  259. NtfsOwns_Mft_Quota_Bitmap = NtfsResourceMft | NtfsResourceQuotaTable | NtfsResourceBitmap,
  260. NtfsOwns_Mft_Reparse = NtfsResourceMft | NtfsResourceReparseTable,
  261. NtfsOwns_Mft_Reparse_Bitmap = NtfsResourceMft | NtfsResourceReparseTable | NtfsResourceBitmap,
  262. NtfsOwns_File_Bitmap = NtfsResourceFile | NtfsResourceBitmap,
  263. NtfsOwns_File_ObjectId = NtfsResourceFile | NtfsResourceObjectIdTable,
  264. NtfsOwns_File_ObjectId_Bitmap = NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  265. NtfsOwns_File_ObjectId_Quota = NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  266. NtfsOwns_File_ObjectId_Quota_Bitmap = NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable | NtfsResourceBitmap,
  267. NtfsOwns_File_ObjectId_Reparse = NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceReparseTable,
  268. NtfsOwns_File_Quota = NtfsResourceFile | NtfsResourceQuotaTable,
  269. NtfsOwns_File_Quota_Bitmap = NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap ,
  270. NtfsOwns_File_Reparse = NtfsResourceFile | NtfsResourceReparseTable,
  271. NtfsOwns_File_Reparse_Bitmap = NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceBitmap,
  272. NtfsOwns_File_Reparse_Quota = NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceQuotaTable,
  273. NtfsOwns_File_Reparse_Quota_Bitmap = NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceQuotaTable | NtfsResourceBitmap,
  274. NtfsOwns_File_Secure = NtfsResourceFile | NtfsResourceSecure,
  275. NtfsOwns_File_Secure_Bitmap = NtfsResourceFile | NtfsResourceSecure | NtfsResourceBitmap,
  276. NtfsOwns_Volume_Quota = NtfsResourceVolume | NtfsResourceQuotaTable,
  277. NtfsOwns_Volume_ObjectId = NtfsResourceVolume | NtfsResourceObjectIdTable,
  278. NtfsOwns_ExVcb_File = NtfsResourceExVcb | NtfsResourceFile,
  279. NtfsOwns_ExVcb_File_Volume = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume,
  280. NtfsOwns_ExVcb_File_Volume_Bitmap = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume | NtfsResourceBitmap,
  281. NtfsOwns_ExVcb_File_Volume_ObjectId = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume | NtfsResourceObjectIdTable,
  282. NtfsOwns_ExVcb_File_Secure = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceSecure,
  283. NtfsOwns_ExVcb_File_Secure_ObjectId = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceSecure | NtfsResourceObjectIdTable,
  284. NtfsOwns_ExVcb_File_Secure_Reparse_ObjectId = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceSecure | NtfsResourceReparseTable | NtfsResourceObjectIdTable,
  285. NtfsOwns_ExVcb_File_Secure_Reparse = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceSecure | NtfsResourceReparseTable,
  286. NtfsOwns_ExVcb_File_Secure_Reparse_ObjectId_Journal = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceObjectIdTable | NtfsResourceSecure | NtfsResourceUsnJournal,
  287. NtfsOwns_ExVcb_File_ObjectId_Secure = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceSecure,
  288. NtfsOwns_ExVcb_Extend = NtfsResourceExVcb | NtfsResourceExtendDir,
  289. NtfsOwns_ExVcb_Extend_File = NtfsResourceExVcb | NtfsResourceExtendDir | NtfsResourceFile,
  290. NtfsOwns_ExVcb_Extend_Journal = NtfsResourceExVcb | NtfsResourceExtendDir | NtfsResourceUsnJournal,
  291. NtfsOwns_ExVcb_Extend_Journal_Bitmap = NtfsResourceExVcb | NtfsResourceExtendDir | NtfsResourceUsnJournal | NtfsResourceBitmap,
  292. NtfsOwns_ExVcb_Journal = NtfsResourceExVcb | NtfsResourceUsnJournal,
  293. NtfsOwns_ExVcb_Mft = NtfsResourceExVcb | NtfsResourceMft,
  294. NtfsOwns_ExVcb_Mft_Extend = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceExtendDir,
  295. NtfsOwns_ExVcb_Mft_Extend_File = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceExtendDir | NtfsResourceFile,
  296. NtfsOwns_ExVcb_Mft_Extend_File_Secure = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceExtendDir | NtfsResourceFile | NtfsResourceSecure,
  297. NtfsOwns_ExVcb_Mft_Extend_Journal = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceExtendDir | NtfsResourceUsnJournal,
  298. NtfsOwns_ExVcb_Mft_File = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceFile, // flush vol + write journal when release all
  299. NtfsOwns_ExVcb_Mft_File_Journal = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal,
  300. NtfsOwns_ExVcb_Mft_File_Volume = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume | NtfsResourceMft,
  301. NtfsOwns_ExVcb_Mft_File_Volume_Bitmap = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume | NtfsResourceMft | NtfsResourceBitmap,
  302. NtfsOwns_ExVcb_Mft_File_Volume_Journal = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume | NtfsResourceMft | NtfsResourceUsnJournal,
  303. NtfsOwns_ExVcb_Mft_Journal = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceUsnJournal,
  304. NtfsOwns_ExVcb_Mft_Root = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceRootDir,
  305. NtfsOwns_ExVcb_Mft_Root_File = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile,
  306. NtfsOwns_ExVcb_Mft_Root_File_Bitmap = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceBitmap,
  307. NtfsOwns_ExVcb_Mft_Root_File_Journal = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceUsnJournal,
  308. NtfsOwns_ExVcb_Mft_Root_File_Journal_Bitmap = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceUsnJournal | NtfsResourceBitmap,
  309. NtfsOwns_ExVcb_Mft_Root_File_Quota = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceMft,
  310. NtfsOwns_ExVcb_Mft_Root_File_Quota_Journal = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceMft | NtfsResourceUsnJournal,
  311. NtfsOwns_ExVcb_Mft_Root_File_Quota_Journal_Bitmap = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBitmap,
  312. NtfsOwns_ExVcb_ObjectId = NtfsResourceExVcb | NtfsResourceObjectIdTable,
  313. NtfsOwns_ExVcb_ObjectId_Extend = NtfsResourceExVcb | NtfsResourceObjectIdTable | NtfsResourceExtendDir,
  314. NtfsOwns_ExVcb_ObjectId_Secure = NtfsResourceExVcb | NtfsResourceObjectIdTable | NtfsResourceSecure,
  315. NtfsOwns_ExVcb_Quota = NtfsResourceExVcb | NtfsResourceQuotaTable,
  316. NtfsOwns_ExVcb_Quota_Reparse = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceReparseTable,
  317. NtfsOwns_ExVcb_Quota_Reparse_Extend = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceReparseTable | NtfsResourceExtendDir,
  318. NtfsOwns_ExVcb_Quota_Reparse_ObjectId = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceReparseTable | NtfsResourceObjectIdTable,
  319. NtfsOwns_ExVcb_Quota_Reparse_Secure = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceReparseTable | NtfsResourceSecure,
  320. NtfsOwns_ExVcb_Quota_Reparse_Secure_Journal = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceReparseTable | NtfsResourceSecure | NtfsResourceUsnJournal,
  321. NtfsOwns_ExVcb_Quota_ObjectId = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceObjectIdTable,
  322. NtfsOwns_ExVcb_Quota_ObjectId_Extend = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceObjectIdTable | NtfsResourceExtendDir,
  323. NtfsOwns_ExVcb_Quota_Extend = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceExtendDir,
  324. NtfsOwns_ExVcb_Reparse_Objid_Secure_Journal = NtfsResourceExVcb | NtfsResourceReparseTable | NtfsResourceObjectIdTable | NtfsResourceSecure | NtfsResourceUsnJournal,
  325. NtfsOwns_ExVcb_Root = NtfsResourceExVcb | NtfsResourceRootDir,
  326. NtfsOwns_ExVcb_Root_Secure = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceSecure,
  327. NtfsOwns_ExVcb_Root_Secure_Quota = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceSecure | NtfsResourceQuotaTable,
  328. NtfsOwns_ExVcb_Root_Extend = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceExtendDir,
  329. NtfsOwns_ExVcb_Root_File = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile,
  330. NtfsOwns_ExVcb_Root_File_Secure = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceSecure,
  331. NtfsOwns_ExVcb_Root_File_Bitmap = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceBitmap,
  332. NtfsOwns_ExVcb_Root_File_Quota = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable,
  333. NtfsOwns_ExVcb_Root_File_Quota_Bitmap = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap,
  334. NtfsOwns_ExVcb_Root_File_ObjectId = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable,
  335. NtfsOwns_ExVcb_Root_File_ObjectId_Extend = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceExtendDir,
  336. NtfsOwns_ExVcb_Root_File_ObjectId_Secure = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceSecure,
  337. NtfsOwns_ExVcb_Root_File_Volume = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceVolume,
  338. NtfsOwns_ExVcb_Root_File_Volume_Bitmap = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceVolume | NtfsResourceBitmap,
  339. NtfsOwns_ExVcb_Root_File_Volume_ObjectId = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceVolume | NtfsResourceObjectIdTable,
  340. NtfsOwns_ExVcb_Root_ObjectId = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceObjectIdTable,
  341. NtfsOwns_ExVcb_Root_ObjectId_Extend = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceObjectIdTable | NtfsResourceExtendDir,
  342. NtfsOwns_ExVcb_Root_ObjectId_Secure = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceObjectIdTable | NtfsResourceSecure,
  343. NtfsOwns_ExVcb_Root_ObjectId_Secure_Bitmap = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceObjectIdTable | NtfsResourceSecure | NtfsResourceBitmap,
  344. NtfsOwns_ExVcb_Root_Volume = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceVolume,
  345. NtfsOwns_ExVcb_Root_Volume_ObjectId = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceVolume | NtfsResourceObjectIdTable,
  346. NtfsOwns_ExVcb_Secure = NtfsResourceExVcb | NtfsResourceSecure,
  347. NtfsOwns_ExVcb_Secure_ObjectId = NtfsResourceExVcb | NtfsResourceSecure | NtfsResourceObjectIdTable,
  348. NtfsOwns_ExVcb_Secure_Reparse = NtfsResourceExVcb | NtfsResourceSecure | NtfsResourceReparseTable,
  349. NtfsOwns_ExVcb_Secure_Reparse_ObjectId = NtfsResourceExVcb | NtfsResourceSecure | NtfsResourceReparseTable | NtfsResourceObjectIdTable,
  350. NtfsOwns_ExVcb_Secure_Reparse_ObjectId_Journal = NtfsResourceExVcb | NtfsResourceSecure | NtfsResourceReparseTable | NtfsResourceObjectIdTable | NtfsResourceUsnJournal,
  351. NtfsOwns_ExVcb_Volume = NtfsResourceExVcb | NtfsResourceVolume,
  352. NtfsOwns_ExVcb_Volume_ObjectId = NtfsResourceExVcb | NtfsResourceVolume | NtfsResourceObjectIdTable, // set vol objectid
  353. NtfsOwns_ExVcb_Volume_ObjectId_Bitmap = NtfsResourceExVcb | NtfsResourceVolume | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  354. NtfsStateMaximum = NtfsResourceMaximum - 1
  355. } NTFS_OWNERSHIP_STATE, *PNTFS_OWNERSHIP_STATE;
  356. typedef struct _NTFS_OWNERSHIP_TRANSITION {
  357. NTFS_OWNERSHIP_STATE Begin;
  358. NTFS_RESOURCE_NAME Acquired;
  359. NTFS_OWNERSHIP_STATE End;
  360. } NTFS_OWNERSHIP_TRANSITION, *PNTFS_OWNERSHIP_TRANSITION;
  361. //
  362. // Transition table definitions
  363. //
  364. #ifdef _NTFS_NTFSDBG_DEFINITIONS_
  365. //
  366. // Two way transitions
  367. //
  368. NTFS_OWNERSHIP_TRANSITION OwnershipTransitionTable[] =
  369. {
  370. {None, NtfsResourceFile, NtfsOwns_File},
  371. {None, NtfsResourceRootDir, NtfsOwns_Root},
  372. {NtfsOwns_Vcb, NtfsResourceRootDir, NtfsOwns_Vcb_Root},
  373. {NtfsOwns_Vcb, NtfsResourceFile, NtfsOwns_Vcb_File},
  374. {NtfsOwns_Vcb, NtfsResourceUsnJournal, NtfsOwns_Vcb_Journal},
  375. {NtfsOwns_Vcb_Upcase, NtfsResourceRootDir, NtfsOwns_Vcb_Root_Upcase},
  376. {NtfsOwns_Vcb_File, NtfsResourceRootDir, NtfsOwns_Vcb_Root_File},
  377. {NtfsOwns_Vcb_Mft_File, NtfsResourceRootDir, NtfsOwns_Vcb_Mft_Root_File}, // deletefile
  378. // {NtfsOwns_Vcb_File_Quota, NtfsResourceRootDir, NtfsOwns_Vcb_Root_File_Quota}, efs createcallback preacquire
  379. {NtfsOwns_Vcb_Mft_Volume_Bitmap, NtfsResourceBoot, NtfsOwns_Vcb_Mft_Volume_Bitmap_Boot},
  380. {NtfsOwns_Vcb_Extend, NtfsResourceFile, NtfsOwns_Vcb_File_Extend}, // usn journal create
  381. {NtfsOwns_Vcb_Extend, NtfsResourceRootDir, NtfsOwns_Vcb_Root_Extend},
  382. {NtfsOwns_ExVcb_Secure, NtfsResourceFile, NtfsOwns_ExVcb_File_Secure}, // syscache file acquire in dismount
  383. {NtfsOwns_ExVcb_Secure_Reparse, NtfsResourceFile, NtfsOwns_ExVcb_File_Secure_Reparse}, // syscache file acquire in dismount
  384. {NtfsOwns_ExVcb_Secure_Reparse, NtfsResourceFile, NtfsOwns_ExVcb_File_Secure_Reparse}, // syscache file acquire in dismount
  385. {NtfsOwns_ExVcb_Secure_Reparse_ObjectId, NtfsResourceFile, NtfsOwns_ExVcb_File_Secure_Reparse_ObjectId}, // syscache file acquire in dismount
  386. {NtfsOwns_ExVcb_Secure_ObjectId, NtfsResourceFile, NtfsOwns_ExVcb_File_Secure_ObjectId}, // syscache file acquire in dismount
  387. {NtfsOwns_ExVcb_Secure_Reparse_ObjectId_Journal, NtfsResourceFile, NtfsOwns_ExVcb_File_Secure_Reparse_ObjectId_Journal}, // syscache file acquire in dismount
  388. //
  389. // Flush Volume for vol. open
  390. //
  391. {NtfsOwns_ExVcb_Volume, NtfsResourceRootDir, NtfsOwns_ExVcb_Root_Volume},
  392. {NtfsOwns_ExVcb_Volume, NtfsResourceFile, NtfsOwns_ExVcb_File_Volume}, // fsp close
  393. {NtfsOwns_ExVcb_File_Volume, NtfsResourceRootDir, NtfsOwns_ExVcb_Root_File_Volume}, // fsp close
  394. {NtfsOwns_ExVcb_Root_Volume, NtfsResourceFile, NtfsOwns_ExVcb_Root_File_Volume},
  395. {NtfsOwns_ExVcb_File, NtfsResourceRootDir, NtfsOwns_ExVcb_Root_File},
  396. {NtfsOwns_ExVcb, NtfsResourceRootDir, NtfsOwns_ExVcb_Root},
  397. {NtfsOwns_ExVcb, NtfsResourceFile, NtfsOwns_ExVcb_File},
  398. {NtfsOwns_ExVcb, NtfsResourceUsnJournal, NtfsOwns_ExVcb_Journal}, // delete usn jrnl
  399. {NtfsOwns_ExVcb_Mft, NtfsResourceExtendDir, NtfsOwns_ExVcb_Mft_Extend}, // CreateUnsJrnl new
  400. {NtfsOwns_ExVcb_Extend, NtfsResourceRootDir, NtfsOwns_ExVcb_Root_Extend},
  401. {NtfsOwns_ExVcb_Mft_Extend_File, NtfsResourceSecure, NtfsOwns_ExVcb_Mft_Extend_File_Secure}, // createjrnl
  402. {NtfsOwns_ExVcb_Journal, NtfsResourceExtendDir, NtfsOwns_ExVcb_Extend_Journal}, // delete usnjrnl special
  403. {NtfsOwns_ExVcb_Extend_Journal, NtfsResourceMft, NtfsOwns_ExVcb_Mft_Extend_Journal}, // DeleteJournal
  404. {NtfsOwns_ExVcb_Mft_Journal, NtfsResourceExtendDir, NtfsOwns_ExVcb_Mft_Extend_Journal}, // DeleteJournalSpecial
  405. // {NtfsOwns_ExVcb_Root_Secure, NtfsResourceQuotaTable, NtfsOwns_ExVcb_Root_Secure_Quota}, // cache secure in createnew path
  406. {NtfsOwns_ExVcb_Root, NtfsResourceFile, NtfsOwns_ExVcb_Root_File},
  407. // {NtfsOwns_ExVcb_Reparse_Objid_Secure_Journal, NtfsResourceRootDir, NtfsOwns_ExVcb_Root_Reparse_Objid_Secure_Journal }, // paging file create path
  408. };
  409. //
  410. // These are release only possible transitions
  411. //
  412. NTFS_OWNERSHIP_TRANSITION OwnershipTransitionTableRelease[] =
  413. {
  414. //
  415. // NtfsResourceAny def. backpaths
  416. //
  417. {NtfsOwns_ExVcb, NtfsResourceAny, NtfsOwns_ExVcb},
  418. {NtfsOwns_ExVcb_File, NtfsResourceAny, NtfsOwns_ExVcb_File},
  419. {NtfsOwns_ExVcb_ObjectId_Secure, NtfsResourceAny, NtfsOwns_ExVcb_ObjectId_Secure},
  420. {NtfsOwns_ExVcb_Quota_Reparse_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Quota_Reparse_ObjectId},
  421. {NtfsOwns_ExVcb_Quota, NtfsResourceAny, NtfsOwns_ExVcb_Quota},
  422. {NtfsOwns_ExVcb_Root, NtfsResourceAny, NtfsOwns_ExVcb_Root},
  423. {NtfsOwns_ExVcb_Root_File_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_ObjectId},
  424. {NtfsOwns_ExVcb_Root_File_ObjectId_Secure, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_ObjectId_Secure},
  425. {NtfsOwns_ExVcb_Root_Volume_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Root_Volume_ObjectId},
  426. {NtfsOwns_ExVcb_Volume, NtfsResourceAny, NtfsOwns_ExVcb_Volume},
  427. {NtfsOwns_ExVcb_Volume_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Volume_ObjectId},
  428. {NtfsOwns_Root_File_ObjectId_Extend, NtfsResourceAny, NtfsOwns_Root_File_ObjectId_Extend}, // acquire all files + exception and transaction
  429. {NtfsOwns_Root_File_ObjectId_Secure, NtfsResourceAny, NtfsOwns_Root_File_ObjectId_Secure} // acquire all files + exception and transaction
  430. };
  431. //
  432. // Acquire Only transtions
  433. //
  434. NTFS_OWNERSHIP_TRANSITION OwnershipTransitionTableAcquire[] =
  435. {
  436. //
  437. // Any relations
  438. //
  439. {NtfsOwns_ExVcb, NtfsResourceAny, NtfsOwns_ExVcb},
  440. {NtfsOwns_ExVcb_Volume, NtfsResourceAny, NtfsOwns_ExVcb_Volume},
  441. {NtfsOwns_ExVcb_File, NtfsResourceAny, NtfsOwns_ExVcb_File},
  442. {NtfsOwns_ExVcb_File_Secure, NtfsResourceAny, NtfsOwns_ExVcb_File_Secure},
  443. {NtfsOwns_ExVcb_ObjectId_Extend, NtfsResourceAny, NtfsOwns_ExVcb_ObjectId_Extend},
  444. {NtfsOwns_ExVcb_Root_File_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_ObjectId},
  445. {NtfsOwns_ExVcb_Root_File_ObjectId_Extend, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_ObjectId_Extend},
  446. {NtfsOwns_ExVcb_Root_Volume_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Root_Volume_ObjectId},
  447. //
  448. // Acquire all files
  449. //
  450. {NtfsOwns_ExVcb_Root_ObjectId_Secure, NtfsResourceAny, NtfsOwns_ExVcb_Root_ObjectId_Secure}, // no userfiles
  451. {NtfsOwns_ExVcb_Root_File_ObjectId_Secure, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_ObjectId_Secure}, // userfile
  452. {NtfsOwns_ExVcb_Root_File_Volume_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_Volume_ObjectId}, // from volopen
  453. {NtfsOwns_ExVcb_Quota, NtfsResourceAny, NtfsOwns_ExVcb_Quota},
  454. {NtfsOwns_ExVcb_Quota_Extend, NtfsResourceAny, NtfsOwns_ExVcb_Quota_Extend},
  455. {NtfsOwns_ExVcb_Quota_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Quota_ObjectId},
  456. {NtfsOwns_ExVcb_Quota_Reparse_Extend, NtfsResourceAny, NtfsOwns_ExVcb_Quota_Reparse_Extend},
  457. {NtfsOwns_ExVcb_Quota_Reparse_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Quota_Reparse_ObjectId}
  458. };
  459. //
  460. // Rules
  461. //
  462. typedef struct _NTFS_OWNERSHIP_TRANSITION_RULE {
  463. NTFS_RESOURCE_NAME NewResource;
  464. ULONG RequiredResourcesMask;
  465. ULONG DisallowedResourcesMask;
  466. } NTFS_OWNERSHIP_TRANSITION_RULE, *PNTFS_OWNERSHIP_TRANSITION_RULE;
  467. //
  468. // Table of rules going in general from end resources to first resources
  469. //
  470. NTFS_OWNERSHIP_TRANSITION_RULE OwnershipTransitionRuleTable[] =
  471. {
  472. {NtfsResourceBitmap, 0, 0},
  473. {NtfsResourceBoot, 0, NtfsResourceBitmap},
  474. {NtfsResourceUsnJournal, 0, NtfsResourceBoot | NtfsResourceBitmap},
  475. {NtfsResourceMft, 0, NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap | NtfsResourceBoot},
  476. {NtfsResourceMft2, 0, NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap | NtfsResourceBoot},
  477. {NtfsResourceLogFile, 0, NtfsResourceMft2 | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap | NtfsResourceBoot},
  478. {NtfsResourceAttrDefTable, 0, NtfsResourceMft2 | NtfsResourceLogFile | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap | NtfsResourceBoot | NtfsResourceExtendDir},
  479. {NtfsResourceBadClust, 0, NtfsResourceAttrDefTable | NtfsResourceMft2 | NtfsResourceLogFile |NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap },
  480. {NtfsResourceExtendDir, 0, NtfsResourceBadClust | NtfsResourceAttrDefTable | NtfsResourceMft2 | NtfsResourceLogFile | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap},
  481. {NtfsResourceSecure, 0, NtfsResourceExtendDir | NtfsResourceBadClust | NtfsResourceAttrDefTable | NtfsResourceMft2 | NtfsResourceLogFile | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap},
  482. {NtfsResourceUpCase, 0, NtfsResourceSecure | NtfsResourceExtendDir | NtfsResourceBadClust | NtfsResourceAttrDefTable | NtfsResourceMft2 | NtfsResourceLogFile | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap},
  483. {NtfsResourceQuotaTable, 0, NtfsResourceUpCase | NtfsResourceSecure | NtfsResourceExtendDir | NtfsResourceBadClust | NtfsResourceUpCase | NtfsResourceAttrDefTable | NtfsResourceMft2 | NtfsResourceLogFile | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap},
  484. {NtfsResourceReparseTable, 0, NtfsResourceQuotaTable | NtfsResourceUpCase | NtfsResourceSecure | NtfsResourceExtendDir | NtfsResourceBadClust | NtfsResourceUpCase | NtfsResourceMft2 | NtfsResourceLogFile | NtfsResourceAttrDefTable | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap},
  485. {NtfsResourceObjectIdTable, 0, NtfsResourceReparseTable | NtfsResourceQuotaTable | NtfsResourceUpCase | NtfsResourceSecure | NtfsResourceExtendDir | NtfsResourceBadClust | NtfsResourceUpCase | NtfsResourceAttrDefTable | NtfsResourceMft2 | NtfsResourceLogFile | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap},
  486. {NtfsResourceVolume, 0, NtfsResourceObjectIdTable | NtfsResourceReparseTable | NtfsResourceQuotaTable | NtfsResourceUpCase | NtfsResourceSecure | NtfsResourceExtendDir | NtfsResourceBadClust | NtfsResourceUpCase | NtfsResourceAttrDefTable | NtfsResourceMft2 | NtfsResourceLogFile | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBoot | NtfsResourceBitmap},
  487. {NtfsResourceSharedVcb, 0, NtfsOwns_All},
  488. {NtfsResourceExVcb, 0, NtfsOwns_All},
  489. {None, 0, 0}
  490. };
  491. #endif
  492. #endif