Source code of Windows XP (NT5)
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.

951 lines
63 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 aorganized in 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. NtfsResourceFile = 0x8,
  37. NtfsResourceRootDir = 0x10,
  38. NtfsResourceObjectIdTable = 0x20,
  39. NtfsResourceSecure = 0x40,
  40. NtfsResourceQuotaTable = 0x80,
  41. NtfsResourceReparseTable = 0x100,
  42. NtfsResourceExtendDir = 0x200,
  43. NtfsResourceBadClust = 0x400,
  44. NtfsResourceUpCase = 0x800,
  45. NtfsResourceAttrDefTable = 0x1000,
  46. NtfsResourceVolume = 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_File = NtfsResourceFile,
  58. NtfsOwns_ExVcb = NtfsResourceExVcb,
  59. NtfsOwns_Vcb = NtfsResourceSharedVcb,
  60. NtfsOwns_BadClust = NtfsResourceBadClust,
  61. NtfsOwns_Boot = NtfsResourceBoot,
  62. NtfsOwns_Bitmap = NtfsResourceBitmap,
  63. NtfsOwns_Extend = NtfsResourceExtendDir,
  64. NtfsOwns_Journal = NtfsResourceUsnJournal,
  65. NtfsOwns_LogFile = NtfsResourceLogFile,
  66. NtfsOwns_Mft = NtfsResourceMft,
  67. NtfsOwns_Mft2 = NtfsResourceMft2,
  68. NtfsOwns_ObjectId = NtfsResourceObjectIdTable,
  69. NtfsOwns_Quota = NtfsResourceQuotaTable,
  70. NtfsOwns_Reparse = NtfsResourceReparseTable,
  71. NtfsOwns_Root = NtfsResourceRootDir,
  72. NtfsOwns_Secure = NtfsResourceSecure,
  73. NtfsOwns_Upcase = NtfsResourceUpCase,
  74. NtfsOwns_Volume = NtfsResourceVolume,
  75. NtfsOwns_Root_File = NtfsResourceRootDir | NtfsResourceFile,
  76. NtfsOwns_Root_File_Bitmap = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceBitmap,
  77. NtfsOwns_Root_File_ObjectId = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable,
  78. NtfsOwns_Root_File_ObjectId_Extend = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceExtendDir,
  79. NtfsOwns_Root_File_ObjectId_Extend_Bitmap = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceExtendDir | NtfsResourceBitmap,
  80. NtfsOwns_Root_File_Quota = NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable,
  81. NtfsOwns_Root_BadClust = NtfsResourceRootDir | NtfsResourceBadClust,
  82. NtfsOwns_Root_Bitmap = NtfsResourceRootDir | NtfsResourceBitmap,
  83. NtfsOwns_Root_Extend = NtfsResourceRootDir | NtfsResourceExtendDir,
  84. NtfsOwns_Root_LogFile = NtfsResourceRootDir | NtfsResourceLogFile,
  85. NtfsOwns_Root_Mft2 = NtfsResourceRootDir | NtfsResourceMft2,
  86. NtfsOwns_Root_Quota = NtfsResourceRootDir | NtfsResourceQuotaTable,
  87. NtfsOwns_Root_ObjectId = NtfsResourceRootDir | NtfsResourceObjectIdTable,
  88. NtfsOwns_Root_Upcase = NtfsResourceRootDir | NtfsResourceUpCase,
  89. NtfsOwns_Root_Secure = NtfsResourceRootDir | NtfsResourceSecure,
  90. NtfsOwns_Root_Mft = NtfsResourceRootDir | NtfsResourceMft,
  91. NtfsOwns_Root_Mft_Bitmap = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceBitmap,
  92. NtfsOwns_Root_Mft_File = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile,
  93. NtfsOwns_Root_Mft_File_Bitmap = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceBitmap,
  94. NtfsOwns_Root_Mft_File_Quota = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable,
  95. NtfsOwns_Root_Mft_File_Journal = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal,
  96. NtfsOwns_Root_Mft_File_Journal_Bitmap = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal | NtfsResourceBitmap,
  97. NtfsOwns_Root_Mft_File_ObjectId = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable,
  98. NtfsOwns_Root_Mft_File_ObjectId_Quota = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  99. NtfsOwns_Root_Mft_Journal = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceUsnJournal,
  100. NtfsOwns_Root_Mft_Journal_Bitmap = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBitmap,
  101. NtfsOwns_Root_Mft_ObjectId = NtfsResourceRootDir | NtfsResourceMft | NtfsResourceObjectIdTable,
  102. NtfsOwns_Vcb_BadClust = NtfsResourceSharedVcb | NtfsResourceBadClust,
  103. NtfsOwns_Vcb_Bitmap = NtfsResourceSharedVcb | NtfsResourceBitmap,
  104. NtfsOwns_Vcb_Boot = NtfsResourceSharedVcb | NtfsResourceBoot,
  105. NtfsOwns_Vcb_Journal = NtfsResourceSharedVcb | NtfsResourceUsnJournal,
  106. NtfsOwns_Vcb_LogFile = NtfsResourceSharedVcb | NtfsResourceLogFile,
  107. NtfsOwns_Vcb_Quota = NtfsResourceSharedVcb | NtfsResourceQuotaTable,
  108. NtfsOwns_Vcb_Reparse = NtfsResourceSharedVcb | NtfsResourceReparseTable,
  109. NtfsOwns_Vcb_Root = NtfsResourceSharedVcb | NtfsResourceRootDir,
  110. NtfsOwns_Vcb_Upcase = NtfsResourceSharedVcb | NtfsResourceUpCase,
  111. NtfsOwns_Vcb_Volume = NtfsResourceSharedVcb | NtfsResourceVolume,
  112. NtfsOwns_Vcb_Mft = NtfsResourceSharedVcb | NtfsResourceMft,
  113. NtfsOwns_Vcb_Mft_BadClust = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceBadClust,
  114. NtfsOwns_Vcb_Mft_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceBitmap,
  115. NtfsOwns_Vcb_Mft_Boot = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceBoot,
  116. NtfsOwns_Vcb_Mft_LogFile = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceLogFile,
  117. NtfsOwns_Vcb_Mft_Mft2 = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceMft2,
  118. NtfsOwns_Vcb_Mft_Upcase = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceUpCase,
  119. NtfsOwns_Vcb_Mft_Secure = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceSecure,
  120. NtfsOwns_Vcb_Mft_Volume = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceVolume,
  121. NtfsOwns_Vcb_Mft_Volume_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceVolume | NtfsResourceBitmap,
  122. NtfsOwns_Vcb_Mft_Volume_Bitmap_Boot = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceVolume | NtfsResourceBitmap | NtfsResourceBoot,
  123. NtfsOwns_Vcb_Mft_Extend = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceExtendDir,
  124. NtfsOwns_Vcb_Mft_File = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile,
  125. NtfsOwns_Vcb_Mft_File_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceBitmap,
  126. NtfsOwns_Vcb_Mft_File_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal,
  127. NtfsOwns_Vcb_Mft_File_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal | NtfsResourceBitmap,
  128. NtfsOwns_Vcb_Mft_File_Secure = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceSecure,
  129. NtfsOwns_Vcb_Mft_File_Reparse = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable,
  130. NtfsOwns_Vcb_Mft_File_Reparse_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceUsnJournal,
  131. NtfsOwns_Vcb_Mft_File_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable,
  132. NtfsOwns_Vcb_Mft_File_Quota_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap,
  133. NtfsOwns_Vcb_Mft_File_ObjectId = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable,
  134. NtfsOwns_Vcb_Mft_File_ObjectId_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  135. NtfsOwns_Vcb_Mft_File_ObjectId_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  136. NtfsOwns_Vcb_Mft_File_ObjectId_Reparse = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceReparseTable,
  137. NtfsOwns_Vcb_Mft_File_ObjectId_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceUsnJournal,
  138. NtfsOwns_Vcb_Mft_File_ObjectId_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceUsnJournal | NtfsResourceBitmap,
  139. NtfsOwns_Vcb_Mft_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceUsnJournal,
  140. NtfsOwns_Vcb_Mft_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBitmap,
  141. NtfsOwns_Vcb_Mft_Root = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir,
  142. NtfsOwns_Vcb_Mft_Root_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceQuotaTable,
  143. NtfsOwns_Vcb_Mft_Root_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceUsnJournal,
  144. NtfsOwns_Vcb_Mft_Root_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceUsnJournal | NtfsResourceBitmap,
  145. NtfsOwns_Vcb_Mft_Root_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceBitmap,
  146. NtfsOwns_Vcb_Mft_Root_File = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile,
  147. NtfsOwns_Vcb_Mft_Root_File_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable,
  148. NtfsOwns_Vcb_Mft_Root_File_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceBitmap,
  149. NtfsOwns_Vcb_Mft_Root_File_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceUsnJournal,
  150. NtfsOwns_Vcb_Mft_Root_File_Journal_Bitmap = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceUsnJournal | NtfsResourceBitmap,
  151. NtfsOwns_Vcb_Mft_Root_File_ObjectId = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable,
  152. NtfsOwns_Vcb_Mft_Root_File_ObjectId_Journal = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceUsnJournal,
  153. NtfsOwns_Vcb_Mft_Root_File_ObjectId_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  154. NtfsOwns_Vcb_Mft_Root_ObjectId = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceObjectIdTable,
  155. NtfsOwns_Vcb_Mft_ObjectId = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceObjectIdTable,
  156. NtfsOwns_Vcb_Mft_Quota = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceQuotaTable,
  157. NtfsOwns_Vcb_Mft_Reparse = NtfsResourceSharedVcb | NtfsResourceMft | NtfsResourceReparseTable,
  158. NtfsOwns_Vcb_Extend = NtfsResourceSharedVcb | NtfsResourceExtendDir,
  159. NtfsOwns_Vcb_Extend_Reparse = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceReparseTable,
  160. NtfsOwns_Vcb_Extend_Reparse_Secure = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceReparseTable | NtfsResourceSecure,
  161. NtfsOwns_Vcb_Extend_ObjectId = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceObjectIdTable,
  162. NtfsOwns_Vcb_Extend_ObjectId_Secure = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceObjectIdTable | NtfsResourceSecure,
  163. NtfsOwns_Vcb_Extend_Quota = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceQuotaTable,
  164. NtfsOwns_Vcb_Extend_Journal = NtfsResourceSharedVcb | NtfsResourceExtendDir | NtfsResourceUsnJournal,
  165. NtfsOwns_Vcb_ObjectId = NtfsResourceSharedVcb | NtfsResourceObjectIdTable,
  166. NtfsOwns_Vcb_Mft2 = NtfsResourceSharedVcb | NtfsResourceMft2,
  167. NtfsOwns_Vcb_Secure = NtfsResourceSharedVcb | NtfsResourceSecure,
  168. NtfsOwns_Vcb_Root_Bitmap = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceBitmap,
  169. NtfsOwns_Vcb_Root_Mft2 = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceMft2,
  170. NtfsOwns_Vcb_Root_Upcase = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceUpCase,
  171. NtfsOwns_Vcb_Root_Extend = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceExtendDir,
  172. NtfsOwns_Vcb_Root_Quota = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceQuotaTable,
  173. NtfsOwns_Vcb_Root_ObjectId = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceObjectIdTable,
  174. NtfsOwns_Vcb_Root_Secure = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceSecure,
  175. NtfsOwns_Vcb_Root_Secure_Bitmap = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceSecure | NtfsResourceBitmap,
  176. NtfsOwns_Vcb_Root_Boot = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceBoot,
  177. NtfsOwns_Vcb_Root_LogFile = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceLogFile,
  178. NtfsOwns_Vcb_Root_BadClust = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceBadClust,
  179. NtfsOwns_Vcb_Root_File = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile,
  180. NtfsOwns_Vcb_Root_File_Secure = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceSecure,
  181. NtfsOwns_Vcb_Root_File_Bitmap = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceBitmap,
  182. NtfsOwns_Vcb_Root_File_ObjectId = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable,
  183. NtfsOwns_Vcb_Root_File_ObjectId_Quota = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  184. NtfsOwns_Vcb_Root_File_ObjectId_Bitmap = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  185. NtfsOwns_Vcb_Root_File_Quota = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable,
  186. NtfsOwns_Vcb_Root_File_Quota_Bitmap = NtfsResourceSharedVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap,
  187. NtfsOwns_Vcb_File = NtfsResourceSharedVcb | NtfsResourceFile,
  188. NtfsOwns_Vcb_File_Quota = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceQuotaTable,
  189. NtfsOwns_Vcb_File_Quota_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap,
  190. NtfsOwns_Vcb_File_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceBitmap,
  191. NtfsOwns_Vcb_File_Secure = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceSecure,
  192. NtfsOwns_Vcb_File_Extend = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceExtendDir,
  193. NtfsOwns_Vcb_File_ObjectId = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceObjectIdTable,
  194. NtfsOwns_Vcb_File_ObjectId_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  195. NtfsOwns_Vcb_File_ObjectId_Quota = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  196. NtfsOwns_Vcb_File_ObjectId_Reparse = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceReparseTable,
  197. NtfsOwns_Vcb_File_ObjectId_Reparse_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceReparseTable | NtfsResourceBitmap,
  198. NtfsOwns_Vcb_File_Reparse = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceReparseTable,
  199. NtfsOwns_Vcb_File_Reparse_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceBitmap,
  200. NtfsOwns_Vcb_File_Extend_Secure = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceExtendDir | NtfsResourceSecure,
  201. NtfsOwns_Vcb_File_Secure_Bitmap = NtfsResourceSharedVcb | NtfsResourceFile | NtfsResourceSecure | NtfsResourceBitmap,
  202. NtfsOwns_Extend_Reparse = NtfsResourceExtendDir | NtfsResourceReparseTable,
  203. NtfsOwns_Extend_ObjectId = NtfsResourceExtendDir | NtfsResourceObjectIdTable,
  204. NtfsOwns_Extend_Journal = NtfsResourceExtendDir | NtfsResourceUsnJournal,
  205. NtfsOwns_Extend_Quota = NtfsResourceExtendDir | NtfsResourceQuotaTable,
  206. NtfsOwns_Mft_Bitmap = NtfsResourceMft | NtfsResourceBitmap,
  207. NtfsOwns_Mft_Journal = NtfsResourceMft | NtfsResourceUsnJournal,
  208. NtfsOwns_Mft_Journal_Bitmap = NtfsResourceMft | NtfsResourceUsnJournal | NtfsResourceBitmap,
  209. NtfsOwns_Mft_Volume = NtfsResourceMft | NtfsResourceVolume,
  210. NtfsOwns_Mft_Volume_Bitmap = NtfsResourceMft | NtfsResourceVolume | NtfsResourceBitmap,
  211. NtfsOwns_Mft_Extend = NtfsResourceMft | NtfsResourceExtendDir,
  212. NtfsOwns_Mft_Extend_Journal = NtfsResourceMft | NtfsResourceExtendDir | NtfsResourceUsnJournal,
  213. NtfsOwns_Mft_File = NtfsResourceMft | NtfsResourceFile,
  214. NtfsOwns_Mft_File_Journal = NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal,
  215. NtfsOwns_Mft_File_Journal_Bitmap = NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal | NtfsResourceBitmap,
  216. NtfsOwns_Mft_File_Bitmap = NtfsResourceMft | NtfsResourceFile | NtfsResourceBitmap,
  217. NtfsOwns_Mft_File_Quota = NtfsResourceMft | NtfsResourceFile | NtfsResourceQuotaTable,
  218. NtfsOwns_Mft_File_Reparse = NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable,
  219. NtfsOwns_Mft_File_Reparse_Journal = NtfsResourceMft | NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceUsnJournal,
  220. NtfsOwns_Mft_File_Secure = NtfsResourceMft | NtfsResourceFile | NtfsResourceSecure,
  221. NtfsOwns_Mft_File_Secure_Journal = NtfsResourceMft | NtfsResourceFile | NtfsResourceSecure | NtfsResourceUsnJournal,
  222. NtfsOwns_Mft_File_ObjectId = NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable,
  223. NtfsOwns_Mft_File_ObjectId_Quota = NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceQuotaTable,
  224. NtfsOwns_Mft_File_ObjectId_Reparse = NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceReparseTable,
  225. NtfsOwns_Mft_File_ObjectId_Journal = NtfsResourceMft | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceUsnJournal,
  226. NtfsOwns_Mft_ObjectId = NtfsResourceMft | NtfsResourceObjectIdTable,
  227. NtfsOwns_Mft_ObjectId_Journal = NtfsResourceMft | NtfsResourceObjectIdTable | NtfsResourceUsnJournal,
  228. NtfsOwns_Mft_ObjectId_Bitmap = NtfsResourceMft | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  229. NtfsOwns_Mft_Upcase = NtfsResourceMft | NtfsResourceUpCase,
  230. NtfsOwns_Mft_Upcase_Bitmap = NtfsResourceMft | NtfsResourceUpCase | NtfsResourceBitmap,
  231. NtfsOwns_Mft_Secure = NtfsResourceMft | NtfsResourceSecure,
  232. NtfsOwns_Mft_Secure_Bitmap = NtfsResourceMft | NtfsResourceSecure | NtfsResourceBitmap,
  233. NtfsOwns_Mft_Quota = NtfsResourceMft | NtfsResourceQuotaTable,
  234. NtfsOwns_Mft_Quota_Bitmap = NtfsResourceMft | NtfsResourceQuotaTable | NtfsResourceBitmap,
  235. NtfsOwns_Mft_Reparse = NtfsResourceMft | NtfsResourceReparseTable,
  236. NtfsOwns_Mft_Reparse_Bitmap = NtfsResourceMft | NtfsResourceReparseTable | NtfsResourceBitmap,
  237. NtfsOwns_File_Secure = NtfsResourceFile | NtfsResourceSecure,
  238. NtfsOwns_File_Secure_Bitmap = NtfsResourceFile | NtfsResourceSecure | NtfsResourceBitmap,
  239. NtfsOwns_File_Quota = NtfsResourceFile | NtfsResourceQuotaTable,
  240. NtfsOwns_File_Quota_Bitmap = NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap ,
  241. NtfsOwns_File_Bitmap = NtfsResourceFile | NtfsResourceBitmap,
  242. NtfsOwns_File_ObjectId = NtfsResourceFile | NtfsResourceObjectIdTable,
  243. NtfsOwns_File_ObjectId_Bitmap = NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  244. NtfsOwns_File_ObjectId_Reparse = NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceReparseTable,
  245. NtfsOwns_File_Reparse = NtfsResourceFile | NtfsResourceReparseTable,
  246. NtfsOwns_File_Reparse_Bitmap = NtfsResourceFile | NtfsResourceReparseTable | NtfsResourceBitmap,
  247. NtfsOwns_Volume_Quota = NtfsResourceVolume | NtfsResourceQuotaTable,
  248. NtfsOwns_Volume_ObjectId = NtfsResourceVolume | NtfsResourceObjectIdTable,
  249. NtfsOwns_ExVcb_File = NtfsResourceExVcb | NtfsResourceFile,
  250. NtfsOwns_ExVcb_File_Volume = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume,
  251. NtfsOwns_ExVcb_File_Volume_Bitmap = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume | NtfsResourceBitmap,
  252. NtfsOwns_ExVcb_File_Volume_ObjectId = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume | NtfsResourceObjectIdTable,
  253. NtfsOwns_ExVcb_File_Secure = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceSecure,
  254. NtfsOwns_ExVcb_File_ObjectId_Secure = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceSecure,
  255. NtfsOwns_ExVcb_Extend = NtfsResourceExVcb | NtfsResourceExtendDir,
  256. NtfsOwns_ExVcb_Extend_Journal = NtfsResourceExVcb | NtfsResourceExtendDir | NtfsResourceUsnJournal,
  257. NtfsOwns_ExVcb_Extend_Journal_Bitmap = NtfsResourceExVcb | NtfsResourceExtendDir | NtfsResourceUsnJournal | NtfsResourceBitmap,
  258. NtfsOwns_ExVcb_Journal = NtfsResourceExVcb | NtfsResourceUsnJournal,
  259. NtfsOwns_ExVcb_Mft = NtfsResourceExVcb | NtfsResourceMft,
  260. NtfsOwns_ExVcb_Mft_Extend = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceExtendDir,
  261. NtfsOwns_ExVcb_Mft_Extend_File = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceExtendDir | NtfsResourceFile,
  262. NtfsOwns_ExVcb_Mft_Extend_Journal = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceExtendDir | NtfsResourceUsnJournal,
  263. NtfsOwns_ExVcb_Mft_File = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceFile, // flush vol + write journal when release all
  264. NtfsOwns_ExVcb_Mft_File_Journal = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceFile | NtfsResourceUsnJournal,
  265. NtfsOwns_ExVcb_Mft_File_Volume = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume | NtfsResourceMft,
  266. NtfsOwns_ExVcb_Mft_File_Volume_Journal = NtfsResourceExVcb | NtfsResourceFile | NtfsResourceVolume | NtfsResourceMft | NtfsResourceUsnJournal,
  267. NtfsOwns_ExVcb_Mft_Journal = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceUsnJournal,
  268. NtfsOwns_ExVcb_Mft_Root = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceRootDir,
  269. NtfsOwns_ExVcb_Mft_Root_File = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile,
  270. NtfsOwns_ExVcb_Mft_Root_File_Bitmap = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceBitmap,
  271. NtfsOwns_ExVcb_Mft_Root_File_Journal = NtfsResourceExVcb | NtfsResourceMft | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceUsnJournal,
  272. NtfsOwns_ExVcb_ObjectId = NtfsResourceExVcb | NtfsResourceObjectIdTable,
  273. NtfsOwns_ExVcb_ObjectId_Extend = NtfsResourceExVcb | NtfsResourceObjectIdTable | NtfsResourceExtendDir,
  274. NtfsOwns_ExVcb_ObjectId_Secure = NtfsResourceExVcb | NtfsResourceObjectIdTable | NtfsResourceSecure,
  275. NtfsOwns_ExVcb_Quota = NtfsResourceExVcb | NtfsResourceQuotaTable,
  276. NtfsOwns_ExVcb_Quota_Reparse = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceReparseTable,
  277. NtfsOwns_ExVcb_Quota_Reparse_Extend = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceReparseTable | NtfsResourceExtendDir,
  278. NtfsOwns_ExVcb_Quota_Reparse_ObjectId = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceReparseTable | NtfsResourceObjectIdTable,
  279. NtfsOwns_ExVcb_Quota_ObjectId = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceObjectIdTable,
  280. NtfsOwns_ExVcb_Quota_ObjectId_Extend = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceObjectIdTable | NtfsResourceExtendDir,
  281. NtfsOwns_ExVcb_Quota_Extend = NtfsResourceExVcb | NtfsResourceQuotaTable | NtfsResourceExtendDir,
  282. NtfsOwns_ExVcb_Root = NtfsResourceExVcb | NtfsResourceRootDir,
  283. NtfsOwns_ExVcb_Root_Extend = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceExtendDir,
  284. NtfsOwns_ExVcb_Root_File = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile,
  285. NtfsOwns_ExVcb_Root_File_Secure = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceSecure,
  286. NtfsOwns_ExVcb_Root_File_Bitmap = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceBitmap,
  287. NtfsOwns_ExVcb_Root_File_Quota = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable,
  288. NtfsOwns_ExVcb_Root_File_Quota_Bitmap = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceBitmap,
  289. NtfsOwns_ExVcb_Root_File_Quota_Mft = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceQuotaTable | NtfsResourceMft,
  290. NtfsOwns_ExVcb_Root_File_ObjectId = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable,
  291. NtfsOwns_ExVcb_Root_File_ObjectId_Extend = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceExtendDir,
  292. NtfsOwns_ExVcb_Root_File_ObjectId_Secure = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceObjectIdTable | NtfsResourceSecure,
  293. NtfsOwns_ExVcb_Root_File_Volume = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceVolume,
  294. NtfsOwns_ExVcb_Root_File_Volume_Bitmap = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceVolume | NtfsResourceBitmap,
  295. NtfsOwns_ExVcb_Root_File_Volume_ObjectId = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceFile | NtfsResourceVolume | NtfsResourceObjectIdTable,
  296. NtfsOwns_ExVcb_Root_ObjectId = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceObjectIdTable,
  297. NtfsOwns_ExVcb_Root_ObjectId_Extend = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceObjectIdTable | NtfsResourceExtendDir,
  298. NtfsOwns_ExVcb_Root_ObjectId_Secure = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceObjectIdTable | NtfsResourceSecure,
  299. NtfsOwns_ExVcb_Root_ObjectId_Secure_Bitmap = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceObjectIdTable | NtfsResourceSecure | NtfsResourceBitmap,
  300. NtfsOwns_ExVcb_Root_Volume = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceVolume,
  301. NtfsOwns_ExVcb_Root_Volume_ObjectId = NtfsResourceExVcb | NtfsResourceRootDir | NtfsResourceVolume | NtfsResourceObjectIdTable,
  302. NtfsOwns_ExVcb_Volume = NtfsResourceExVcb | NtfsResourceVolume,
  303. NtfsOwns_ExVcb_Volume_ObjectId = NtfsResourceExVcb | NtfsResourceVolume | NtfsResourceObjectIdTable, // set vol objectid
  304. NtfsOwns_ExVcb_Volume_ObjectId_Bitmap = NtfsResourceExVcb | NtfsResourceVolume | NtfsResourceObjectIdTable | NtfsResourceBitmap,
  305. NtfsStateMaximum = NtfsResourceMaximum - 1
  306. } NTFS_OWNERSHIP_STATE, *PNTFS_OWNERSHIP_STATE;
  307. typedef struct _NTFS_OWNERSHIP_TRANSITION {
  308. NTFS_OWNERSHIP_STATE Begin;
  309. NTFS_RESOURCE_NAME Acquired;
  310. NTFS_OWNERSHIP_STATE End;
  311. } NTFS_OWNERSHIP_TRANSITION, *PNTFS_OWNERSHIP_TRANSITION;
  312. //
  313. // Transition table definitions
  314. //
  315. #ifdef _NTFS_NTFSDBG_DEFINITIONS_
  316. //
  317. // Two way transitions
  318. //
  319. NTFS_OWNERSHIP_TRANSITION OwnershipTransitionTable[] =
  320. {
  321. {None, NtfsResourceFile, NtfsOwns_File},
  322. {None, NtfsResourceMft, NtfsOwns_Mft},
  323. {None, NtfsResourceExVcb, NtfsOwns_ExVcb},
  324. {None, NtfsResourceSharedVcb, NtfsOwns_Vcb},
  325. {None, NtfsResourceVolume, NtfsOwns_Volume},
  326. {None, NtfsResourceRootDir, NtfsOwns_Root},
  327. {None, NtfsResourceReparseTable, NtfsOwns_Reparse},
  328. {None, NtfsResourceBitmap, NtfsOwns_Bitmap},
  329. {None, NtfsResourceUsnJournal, NtfsOwns_Journal},
  330. {None, NtfsResourceObjectIdTable, NtfsOwns_ObjectId},
  331. {None, NtfsResourceMft2, NtfsOwns_Mft2},
  332. {None, NtfsResourceUpCase, NtfsOwns_Upcase},
  333. {None, NtfsResourceExtendDir, NtfsOwns_Extend},
  334. {None, NtfsResourceSecure, NtfsOwns_Secure},
  335. {None, NtfsResourceQuotaTable, NtfsOwns_Quota},
  336. {None, NtfsResourceReparseTable, NtfsOwns_Reparse},
  337. {NtfsOwns_Mft, NtfsResourceUsnJournal, NtfsOwns_Mft_Journal},
  338. {NtfsOwns_Mft, NtfsResourceBitmap, NtfsOwns_Mft_Bitmap}, // proocess exception
  339. {NtfsOwns_Mft_Journal, NtfsResourceBitmap, NtfsOwns_Mft_Journal_Bitmap},
  340. {NtfsOwns_Mft_File, NtfsResourceUsnJournal, NtfsOwns_Mft_File_Journal},
  341. {NtfsOwns_Mft_File, NtfsResourceBitmap, NtfsOwns_Mft_File_Bitmap},
  342. {NtfsOwns_Mft_File_Journal, NtfsResourceBitmap, NtfsOwns_Mft_File_Journal_Bitmap},
  343. {NtfsOwns_Root, NtfsResourceBitmap, NtfsOwns_Root_Bitmap},
  344. {NtfsOwns_Root, NtfsResourceQuotaTable, NtfsOwns_Root_Quota},
  345. {NtfsOwns_Root, NtfsResourceMft, NtfsOwns_Root_Mft}, // usnjrnl entry for root data strm
  346. {NtfsOwns_Root_File, NtfsResourceBitmap, NtfsOwns_Root_File_Bitmap}, // process exception
  347. {NtfsOwns_Root_Mft, NtfsResourceUsnJournal, NtfsOwns_Root_Mft_Journal},
  348. {NtfsOwns_Root_File_ObjectId_Extend, NtfsResourceBitmap, NtfsOwns_Root_File_ObjectId_Extend_Bitmap}, // process exception from defrag
  349. {NtfsOwns_Root_Mft_Journal, NtfsResourceBitmap, NtfsOwns_Root_Mft_Journal_Bitmap},
  350. {NtfsOwns_Root_Mft_File, NtfsResourceBitmap, NtfsOwns_Root_Mft_File_Bitmap}, // process exception
  351. {NtfsOwns_Root_Mft_File_Journal, NtfsResourceBitmap, NtfsOwns_Root_Mft_File_Journal_Bitmap}, // process exception
  352. //
  353. // Defrag paths
  354. //
  355. {NtfsOwns_Root_Mft, NtfsResourceBitmap, NtfsOwns_Root_Mft_Bitmap},
  356. {NtfsOwns_Upcase, NtfsResourceMft, NtfsOwns_Mft_Upcase},
  357. {NtfsOwns_Mft_Upcase, NtfsResourceBitmap, NtfsOwns_Mft_Upcase_Bitmap},
  358. {NtfsOwns_Secure, NtfsResourceMft, NtfsOwns_Mft_Secure},
  359. {NtfsOwns_Mft_Secure, NtfsResourceBitmap, NtfsOwns_Mft_Secure_Bitmap},
  360. {NtfsOwns_ObjectId, NtfsResourceMft, NtfsOwns_Mft_ObjectId},
  361. {NtfsOwns_Mft_ObjectId, NtfsResourceBitmap, NtfsOwns_Mft_ObjectId_Bitmap},
  362. {NtfsOwns_Mft_ObjectId, NtfsResourceUsnJournal, NtfsOwns_Mft_ObjectId_Journal},
  363. {NtfsOwns_Quota, NtfsResourceMft, NtfsOwns_Mft_Quota},
  364. {NtfsOwns_Mft_Quota, NtfsResourceBitmap, NtfsOwns_Mft_Quota_Bitmap},
  365. {NtfsOwns_Reparse, NtfsResourceMft, NtfsOwns_Mft_Reparse},
  366. {NtfsOwns_Mft_Reparse, NtfsResourceBitmap, NtfsOwns_Mft_Reparse_Bitmap},
  367. {NtfsOwns_Volume, NtfsResourceQuotaTable, NtfsOwns_Volume_Quota},
  368. {NtfsOwns_Volume, NtfsResourceMft, NtfsOwns_Mft_Volume},
  369. {NtfsOwns_File, NtfsResourceSecure, NtfsOwns_File_Secure},
  370. {NtfsOwns_File_Secure, NtfsResourceBitmap, NtfsOwns_File_Secure_Bitmap},
  371. {NtfsOwns_File_Secure, NtfsResourceMft, NtfsOwns_Mft_File_Secure},
  372. {NtfsOwns_Mft_File_Secure, NtfsResourceUsnJournal, NtfsOwns_Mft_File_Secure_Journal},
  373. {NtfsOwns_File, NtfsResourceBitmap, NtfsOwns_File_Bitmap},
  374. {NtfsOwns_File, NtfsResourceQuotaTable, NtfsOwns_File_Quota},
  375. {NtfsOwns_File, NtfsResourceObjectIdTable, NtfsOwns_File_ObjectId},
  376. {NtfsOwns_File, NtfsResourceMft, NtfsOwns_Mft_File},
  377. {NtfsOwns_File, NtfsResourceReparseTable, NtfsOwns_File_Reparse},
  378. {NtfsOwns_File_Quota, NtfsResourceBitmap, NtfsOwns_File_Quota_Bitmap},
  379. {NtfsOwns_File_Quota, NtfsResourceMft, NtfsOwns_Mft_File_Quota},
  380. {NtfsOwns_File_ObjectId, NtfsResourceBitmap, NtfsOwns_File_ObjectId_Bitmap},
  381. {NtfsOwns_File_ObjectId, NtfsResourceMft, NtfsOwns_Mft_File_ObjectId},
  382. {NtfsOwns_Mft_File_ObjectId, NtfsResourceUsnJournal, NtfsOwns_Mft_File_ObjectId_Journal}, // SetOrGetObjid
  383. {NtfsOwns_File_Reparse, NtfsResourceBitmap, NtfsOwns_File_Reparse_Bitmap},
  384. {NtfsOwns_File_Reparse, NtfsResourceMft, NtfsOwns_Mft_File_Reparse},
  385. {NtfsOwns_Mft_File_Reparse, NtfsResourceUsnJournal, NtfsOwns_Mft_File_Reparse_Journal},
  386. {NtfsOwns_Vcb, NtfsResourceVolume, NtfsOwns_Vcb_Volume},
  387. {NtfsOwns_Vcb, NtfsResourceRootDir, NtfsOwns_Vcb_Root},
  388. {NtfsOwns_Vcb, NtfsResourceFile, NtfsOwns_Vcb_File},
  389. {NtfsOwns_Vcb, NtfsResourceMft, NtfsOwns_Vcb_Mft},
  390. {NtfsOwns_Vcb, NtfsResourceReparseTable, NtfsOwns_Vcb_Reparse},
  391. {NtfsOwns_Vcb, NtfsResourceObjectIdTable, NtfsOwns_Vcb_ObjectId},
  392. {NtfsOwns_Vcb, NtfsResourceQuotaTable, NtfsOwns_Vcb_Quota},
  393. {NtfsOwns_Vcb, NtfsResourceExtendDir, NtfsOwns_Vcb_Extend},
  394. {NtfsOwns_Vcb, NtfsResourceBitmap, NtfsOwns_Vcb_Bitmap},
  395. {NtfsOwns_Vcb, NtfsResourceUpCase, NtfsOwns_Vcb_Upcase},
  396. {NtfsOwns_Vcb, NtfsResourceBoot, NtfsOwns_Vcb_Boot},
  397. {NtfsOwns_Vcb, NtfsResourceExtendDir, NtfsOwns_Vcb_Extend},
  398. {NtfsOwns_Vcb, NtfsResourceUsnJournal, NtfsOwns_Vcb_Journal},
  399. {NtfsOwns_Vcb, NtfsResourceMft2, NtfsOwns_Vcb_Mft2},
  400. {NtfsOwns_Vcb, NtfsResourceSecure, NtfsOwns_Vcb_Secure},
  401. {NtfsOwns_Vcb_Volume, NtfsResourceMft, NtfsOwns_Vcb_Mft_Volume}, // extend vol.
  402. {NtfsOwns_Vcb_Upcase, NtfsResourceRootDir, NtfsOwns_Vcb_Root_Upcase},
  403. {NtfsOwns_Vcb_File, NtfsResourceRootDir, NtfsOwns_Vcb_Root_File},
  404. {NtfsOwns_Vcb_File, NtfsResourceSecure, NtfsOwns_Vcb_File_Secure},
  405. {NtfsOwns_Vcb_File, NtfsResourceBitmap, NtfsOwns_Vcb_File_Bitmap},
  406. {NtfsOwns_Vcb_File, NtfsResourceMft, NtfsOwns_Vcb_Mft_File},
  407. {NtfsOwns_Vcb_File, NtfsResourceQuotaTable, NtfsOwns_Vcb_File_Quota},
  408. {NtfsOwns_Vcb_File, NtfsResourceObjectIdTable, NtfsOwns_Vcb_File_ObjectId},
  409. {NtfsOwns_Vcb_File, NtfsResourceReparseTable, NtfsOwns_Vcb_File_Reparse},
  410. {NtfsOwns_Vcb_File_Extend, NtfsResourceSecure, NtfsOwns_Vcb_File_Extend_Secure},
  411. {NtfsOwns_Vcb_File_Secure, NtfsResourceBitmap, NtfsOwns_Vcb_File_Secure_Bitmap},
  412. {NtfsOwns_Vcb_File_Secure, NtfsResourceMft, NtfsOwns_Vcb_Mft_File_Secure}, // split during security grow
  413. {NtfsOwns_Vcb_File_Quota, NtfsResourceMft, NtfsOwns_Vcb_Mft_File_Quota},
  414. {NtfsOwns_Vcb_File_Quota, NtfsResourceBitmap, NtfsOwns_Vcb_File_Quota_Bitmap},
  415. {NtfsOwns_Vcb_File_Reparse, NtfsResourceMft, NtfsOwns_Vcb_Mft_File_Reparse},
  416. {NtfsOwns_Vcb_File_Reparse, NtfsResourceBitmap, NtfsOwns_Vcb_File_Reparse_Bitmap},
  417. {NtfsOwns_Vcb_File_ObjectId, NtfsResourceMft, NtfsOwns_Vcb_Mft_File_ObjectId,}, // DeleteFilePath - CreateFile for tunneling
  418. {NtfsOwns_Vcb_File_ObjectId, NtfsResourceBitmap, NtfsOwns_Vcb_File_ObjectId_Bitmap},
  419. {NtfsOwns_Vcb_File_ObjectId, NtfsResourceQuotaTable, NtfsOwns_Vcb_File_ObjectId_Quota},
  420. {NtfsOwns_Vcb_File_ObjectId, NtfsResourceReparseTable, NtfsOwns_Vcb_File_ObjectId_Reparse},
  421. {NtfsOwns_Vcb_File_ObjectId_Reparse, NtfsResourceBitmap, NtfsOwns_Vcb_File_ObjectId_Reparse_Bitmap},
  422. {NtfsOwns_Vcb_File_ObjectId_Reparse, NtfsResourceMft, NtfsOwns_Vcb_Mft_File_ObjectId_Reparse},
  423. {NtfsOwns_Vcb_File_ObjectId_Quota, NtfsResourceMft, NtfsOwns_Vcb_Mft_File_ObjectId_Quota},
  424. {NtfsOwns_Vcb_Root, NtfsResourceQuotaTable, NtfsOwns_Vcb_Root_Quota},
  425. {NtfsOwns_Vcb_Root, NtfsResourceObjectIdTable, NtfsOwns_Vcb_Root_ObjectId},
  426. {NtfsOwns_Vcb_Root, NtfsResourceSecure, NtfsOwns_Vcb_Root_Secure},
  427. {NtfsOwns_Vcb_Root, NtfsResourceMft, NtfsOwns_Vcb_Mft_Root},
  428. {NtfsOwns_Vcb_Root, NtfsResourceMft2, NtfsOwns_Vcb_Root_Mft2},
  429. {NtfsOwns_Vcb_Root, NtfsResourceBitmap, NtfsOwns_Vcb_Root_Bitmap},
  430. {NtfsOwns_Vcb_Root_Quota, NtfsResourceMft, NtfsOwns_Vcb_Mft_Root_Quota},
  431. {NtfsOwns_Vcb_Root_ObjectId, NtfsResourceMft, NtfsOwns_Vcb_Mft_Root_ObjectId},
  432. {NtfsOwns_Vcb_Root_File, NtfsResourceSecure, NtfsOwns_Vcb_Root_File_Secure},
  433. {NtfsOwns_Vcb_Root_File, NtfsResourceMft, NtfsOwns_Vcb_Mft_Root_File},
  434. {NtfsOwns_Vcb_Root_File, NtfsResourceBitmap, NtfsOwns_Vcb_Root_File_Bitmap},
  435. {NtfsOwns_Vcb_Root_File, NtfsResourceObjectIdTable, NtfsOwns_Vcb_Root_File_ObjectId},
  436. {NtfsOwns_Vcb_Root_File, NtfsResourceQuotaTable, NtfsOwns_Vcb_Root_File_Quota},
  437. {NtfsOwns_Vcb_Root_File_Quota, NtfsResourceBitmap, NtfsOwns_Vcb_Root_File_Quota_Bitmap},
  438. {NtfsOwns_Vcb_Root_File_Quota, NtfsResourceMft, NtfsOwns_Vcb_Mft_Root_File_Quota},
  439. {NtfsOwns_Vcb_Root_File_ObjectId, NtfsResourceBitmap, NtfsOwns_Vcb_Root_File_ObjectId_Bitmap},
  440. {NtfsOwns_Vcb_Root_File_ObjectId, NtfsResourceMft, NtfsOwns_Vcb_Mft_Root_File_ObjectId},
  441. {NtfsOwns_Vcb_Root_File_ObjectId, NtfsResourceQuotaTable, NtfsOwns_Vcb_Root_File_ObjectId_Quota},
  442. {NtfsOwns_Vcb_Root_File_ObjectId_Quota, NtfsResourceMft, NtfsOwns_Vcb_Mft_Root_File_ObjectId_Quota},
  443. {NtfsOwns_Vcb_Root_Secure, NtfsResourceBitmap, NtfsOwns_Vcb_Root_Secure_Bitmap},
  444. {NtfsOwns_Vcb_Mft, NtfsResourceUsnJournal, NtfsOwns_Vcb_Mft_Journal},
  445. {NtfsOwns_Vcb_Mft, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_Bitmap},
  446. {NtfsOwns_Vcb_Mft_Journal, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_Journal_Bitmap},
  447. {NtfsOwns_Vcb_Mft_Root, NtfsResourceUsnJournal, NtfsOwns_Vcb_Mft_Root_Journal},
  448. {NtfsOwns_Vcb_Mft_Root, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_Root_Bitmap},
  449. {NtfsOwns_Vcb_Mft_Root_Journal, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_Root_Journal_Bitmap},
  450. {NtfsOwns_Vcb_Mft_Root_File, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_Root_File_Bitmap},
  451. {NtfsOwns_Vcb_Mft_Root_File, NtfsResourceUsnJournal, NtfsOwns_Vcb_Mft_Root_File_Journal},
  452. {NtfsOwns_Vcb_Mft_Root_File_Journal, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_Root_File_Journal_Bitmap},
  453. {NtfsOwns_Vcb_Mft_Root_File_ObjectId, NtfsResourceUsnJournal, NtfsOwns_Vcb_Mft_Root_File_ObjectId_Journal},
  454. {NtfsOwns_Vcb_Mft_File_Quota, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_File_Quota_Bitmap},
  455. {NtfsOwns_Vcb_Mft_File_ObjectId, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_File_ObjectId_Bitmap},
  456. {NtfsOwns_Vcb_Mft_File_ObjectId, NtfsResourceUsnJournal, NtfsOwns_Vcb_Mft_File_ObjectId_Journal},
  457. {NtfsOwns_Vcb_Mft_File_ObjectId_Journal, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_File_ObjectId_Journal_Bitmap},
  458. {NtfsOwns_Vcb_Mft_File, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_File_Bitmap},
  459. {NtfsOwns_Vcb_Mft_File, NtfsResourceUsnJournal, NtfsOwns_Vcb_Mft_File_Journal},
  460. {NtfsOwns_Vcb_Mft_File_Journal, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_File_Journal_Bitmap},
  461. {NtfsOwns_Vcb_Mft_File_Reparse, NtfsResourceUsnJournal, NtfsOwns_Vcb_Mft_File_Reparse_Journal},
  462. {NtfsOwns_Vcb_Mft_Volume_Bitmap, NtfsResourceBoot, NtfsOwns_Vcb_Mft_Volume_Bitmap_Boot},
  463. {NtfsOwns_Vcb_Mft_Volume, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_Volume_Bitmap},
  464. {NtfsOwns_Vcb_Extend, NtfsResourceFile, NtfsOwns_Vcb_File_Extend},
  465. {NtfsOwns_Vcb_Extend, NtfsResourceRootDir, NtfsOwns_Vcb_Root_Extend},
  466. {NtfsOwns_Vcb_Extend_Reparse, NtfsResourceSecure, NtfsOwns_Vcb_Extend_Reparse_Secure},
  467. {NtfsOwns_Vcb_Extend_ObjectId, NtfsResourceSecure, NtfsOwns_Vcb_Extend_ObjectId_Secure},
  468. {NtfsOwns_Vcb_Reparse, NtfsResourceExtendDir, NtfsOwns_Vcb_Extend_Reparse},
  469. {NtfsOwns_Vcb_ObjectId, NtfsResourceExtendDir, NtfsOwns_Vcb_Extend_ObjectId}, // cleanup of objid
  470. {NtfsOwns_Vcb_Quota, NtfsResourceExtendDir, NtfsOwns_Vcb_Extend_Quota}, // cleanup of quota
  471. //
  472. // Flush Volume for vol. open
  473. //
  474. {NtfsOwns_ExVcb_Volume, NtfsResourceRootDir, NtfsOwns_ExVcb_Root_Volume},
  475. {NtfsOwns_ExVcb_Volume, NtfsResourceFile, NtfsOwns_ExVcb_File_Volume}, // fsp close
  476. {NtfsOwns_ExVcb_File_Volume, NtfsResourceRootDir, NtfsOwns_ExVcb_Root_File_Volume}, // fsp close
  477. {NtfsOwns_ExVcb_Root_Volume, NtfsResourceFile, NtfsOwns_ExVcb_Root_File_Volume},
  478. {NtfsOwns_ExVcb_Root_File_Volume, NtfsResourceBitmap, NtfsOwns_ExVcb_Root_File_Volume_Bitmap},
  479. {NtfsOwns_ExVcb_Root_File_Volume, NtfsResourceObjectIdTable, NtfsOwns_ExVcb_Root_File_Volume_ObjectId},
  480. {NtfsOwns_ExVcb, NtfsResourceVolume, NtfsOwns_ExVcb_Volume},
  481. {NtfsOwns_ExVcb_Volume, NtfsResourceObjectIdTable, NtfsOwns_ExVcb_Volume_ObjectId}, // set vol objid
  482. {NtfsOwns_ExVcb_Volume_ObjectId, NtfsResourceBitmap, NtfsOwns_ExVcb_Volume_ObjectId_Bitmap},
  483. {NtfsOwns_ExVcb_File_Volume, NtfsResourceMft, NtfsOwns_ExVcb_Mft_File_Volume},
  484. {NtfsOwns_ExVcb_File_Volume, NtfsResourceBitmap, NtfsOwns_ExVcb_File_Volume_Bitmap},
  485. {NtfsOwns_ExVcb_Mft_File_Volume, NtfsResourceUsnJournal, NtfsOwns_ExVcb_Mft_File_Volume_Journal},
  486. {NtfsOwns_ExVcb_Root_Volume, NtfsResourceObjectIdTable, NtfsOwns_ExVcb_Root_Volume_ObjectId},
  487. {NtfsOwns_ExVcb, NtfsResourceRootDir, NtfsOwns_ExVcb_Root},
  488. {NtfsOwns_ExVcb, NtfsResourceFile, NtfsOwns_ExVcb_File},
  489. {NtfsOwns_ExVcb, NtfsResourceExtendDir, NtfsOwns_ExVcb_Extend},
  490. {NtfsOwns_ExVcb, NtfsResourceUsnJournal, NtfsOwns_ExVcb_Journal}, // delete usn jrnl
  491. {NtfsOwns_ExVcb, NtfsResourceQuotaTable, NtfsOwns_ExVcb_Quota}, // dismount
  492. {NtfsOwns_ExVcb_Quota, NtfsResourceReparseTable, NtfsOwns_ExVcb_Quota_Reparse},
  493. {NtfsOwns_ExVcb_Quota, NtfsResourceObjectIdTable, NtfsOwns_ExVcb_Quota_ObjectId},
  494. {NtfsOwns_ExVcb_Quota_ObjectId, NtfsResourceExtendDir, NtfsOwns_ExVcb_Quota_ObjectId_Extend},
  495. {NtfsOwns_ExVcb_Quota_Reparse, NtfsResourceExtendDir, NtfsOwns_ExVcb_Quota_Reparse_Extend},
  496. {NtfsOwns_ExVcb_Quota_Reparse, NtfsResourceObjectIdTable, NtfsOwns_ExVcb_Quota_Reparse_ObjectId},
  497. {NtfsOwns_ExVcb, NtfsResourceMft, NtfsOwns_ExVcb_Mft},
  498. {NtfsOwns_ExVcb_Mft, NtfsResourceUsnJournal, NtfsOwns_ExVcb_Mft_Journal}, // Create existing jrnl
  499. {NtfsOwns_ExVcb_Mft, NtfsResourceExtendDir, NtfsOwns_ExVcb_Mft_Extend}, // CreateUnsJrnl new
  500. {NtfsOwns_ExVcb_Mft_Root_File, NtfsResourceUsnJournal, NtfsOwns_ExVcb_Mft_Root_File_Journal},
  501. {NtfsOwns_ExVcb_Mft_Root_File, NtfsResourceBitmap, NtfsOwns_ExVcb_Mft_Root_File_Bitmap},
  502. {NtfsOwns_ExVcb_Extend, NtfsResourceRootDir, NtfsOwns_ExVcb_Root_Extend},
  503. {NtfsOwns_ExVcb_Journal, NtfsResourceExtendDir, NtfsOwns_ExVcb_Extend_Journal}, // delete usnjrnl special
  504. {NtfsOwns_ExVcb_Extend_Journal, NtfsResourceBitmap, NtfsOwns_ExVcb_Extend_Journal_Bitmap}, // DeleteJournalSpecial
  505. {NtfsOwns_ExVcb_Extend_Journal, NtfsResourceMft, NtfsOwns_ExVcb_Mft_Extend_Journal}, // DeleteJournal
  506. {NtfsOwns_ExVcb_Root, NtfsResourceFile, NtfsOwns_ExVcb_Root_File},
  507. {NtfsOwns_ExVcb_Root, NtfsResourceMft, NtfsOwns_ExVcb_Mft_Root},
  508. {NtfsOwns_ExVcb_Root, NtfsResourceObjectIdTable, NtfsOwns_ExVcb_Root_ObjectId},
  509. {NtfsOwns_ExVcb_Root_ObjectId, NtfsResourceExtendDir, NtfsOwns_ExVcb_Root_ObjectId_Extend},
  510. {NtfsOwns_ExVcb_Root_ObjectId, NtfsResourceSecure, NtfsOwns_ExVcb_Root_ObjectId_Secure},
  511. {NtfsOwns_ExVcb_Root_ObjectId_Secure, NtfsResourceBitmap, NtfsOwns_ExVcb_Root_ObjectId_Secure_Bitmap},
  512. {NtfsOwns_ExVcb_File, NtfsResourceSecure, NtfsOwns_ExVcb_File_Secure},
  513. {NtfsOwns_ExVcb_File, NtfsResourceMft, NtfsOwns_ExVcb_Mft_File},
  514. {NtfsOwns_ExVcb_Mft_File, NtfsResourceUsnJournal, NtfsOwns_ExVcb_Mft_File_Journal},
  515. {NtfsOwns_ExVcb_Root_File, NtfsResourceSecure, NtfsOwns_ExVcb_Root_File_Secure},
  516. {NtfsOwns_ExVcb_Root_File, NtfsResourceBitmap, NtfsOwns_ExVcb_Root_File_Bitmap},
  517. {NtfsOwns_ExVcb_Root_File, NtfsResourceQuotaTable, NtfsOwns_ExVcb_Root_File_Quota},
  518. {NtfsOwns_ExVcb_Root_File, NtfsResourceMft, NtfsOwns_ExVcb_Mft_Root_File},
  519. {NtfsOwns_ExVcb_Root_File_Quota, NtfsResourceMft, NtfsOwns_ExVcb_Root_File_Quota_Mft},
  520. {NtfsOwns_ExVcb_Root_File_Quota, NtfsResourceBitmap, NtfsOwns_ExVcb_Root_File_Quota_Bitmap},
  521. //
  522. // AcquireAllFilesPath
  523. //
  524. {NtfsOwns_ExVcb_Root_File, NtfsResourceObjectIdTable, NtfsOwns_ExVcb_Root_File_ObjectId},
  525. {NtfsOwns_ExVcb_Root_File_ObjectId, NtfsResourceSecure, NtfsOwns_ExVcb_Root_File_ObjectId_Secure},
  526. };
  527. //
  528. // These are release only possible transitions
  529. //
  530. NTFS_OWNERSHIP_TRANSITION OwnershipTransitionTableRelease[] =
  531. {
  532. //
  533. // Teardowns created by out of order vcb release
  534. //
  535. {NtfsOwns_BadClust, NtfsResourceBadClust, None},
  536. {NtfsOwns_Boot, NtfsResourceBoot, None},
  537. {NtfsOwns_Root_BadClust, NtfsResourceBadClust, NtfsOwns_Root},
  538. {NtfsOwns_Root_File, NtfsResourceRootDir, NtfsOwns_File},
  539. {NtfsOwns_Root_File, NtfsResourceFile, NtfsOwns_Root},
  540. {NtfsOwns_Root_File_ObjectId, NtfsResourceObjectIdTable, NtfsOwns_Root_File},
  541. {NtfsOwns_Root_File_ObjectId_Extend, NtfsResourceExtendDir, NtfsOwns_Root_File_ObjectId},
  542. {NtfsOwns_Root_File_Quota, NtfsResourceQuotaTable, NtfsOwns_Root_File},
  543. {NtfsOwns_Root_LogFile, NtfsResourceLogFile, NtfsOwns_Root},
  544. {NtfsOwns_Root_Mft2, NtfsResourceMft2, NtfsOwns_Root},
  545. {NtfsOwns_Root_ObjectId, NtfsResourceObjectIdTable, NtfsOwns_Root},
  546. {NtfsOwns_Root_Secure, NtfsResourceSecure, NtfsOwns_Root},
  547. {NtfsOwns_Root_Upcase, NtfsResourceUpCase, NtfsOwns_Root},
  548. {NtfsOwns_Root_Mft, NtfsResourceMft, NtfsOwns_Root},
  549. {NtfsOwns_Root_Mft, NtfsResourceRootDir, NtfsOwns_Mft}, // after teardown in create
  550. {NtfsOwns_Root_Mft_File, NtfsResourceMft, NtfsOwns_Root_File},
  551. {NtfsOwns_Root_Mft_File, NtfsResourceFile, NtfsOwns_Root_Mft},
  552. {NtfsOwns_Root_Mft_File_Quota, NtfsResourceQuotaTable, NtfsOwns_Root_Mft_File},
  553. {NtfsOwns_Root_Mft_File_Journal, NtfsResourceRootDir, NtfsOwns_Mft_File_Journal},
  554. {NtfsOwns_Root_Mft_File_Journal, NtfsResourceUsnJournal, NtfsOwns_Root_Mft_File},
  555. {NtfsOwns_Root_Mft_File_ObjectId, NtfsResourceFile, NtfsOwns_Root_Mft_ObjectId},
  556. {NtfsOwns_Root_Mft_File_ObjectId, NtfsResourceMft, NtfsOwns_Root_File_ObjectId},
  557. {NtfsOwns_Root_Mft_Journal, NtfsResourceUsnJournal, NtfsOwns_Root_Mft},
  558. {NtfsOwns_Root_Mft_ObjectId, NtfsResourceMft, NtfsOwns_Root_ObjectId},
  559. {NtfsOwns_Root_Extend, NtfsResourceExtendDir, NtfsOwns_Root},
  560. {NtfsOwns_Root_Extend, NtfsResourceRootDir, NtfsOwns_Extend},
  561. {NtfsOwns_Extend_Reparse, NtfsResourceReparseTable, NtfsOwns_Extend},
  562. {NtfsOwns_Extend_Reparse, NtfsResourceExtendDir, NtfsOwns_Reparse},
  563. {NtfsOwns_Extend_ObjectId, NtfsResourceObjectIdTable, NtfsOwns_Extend},
  564. {NtfsOwns_Extend_ObjectId, NtfsResourceExtendDir, NtfsOwns_ObjectId},
  565. {NtfsOwns_Extend_Quota, NtfsResourceQuotaTable, NtfsOwns_Extend},
  566. {NtfsOwns_Extend_Quota, NtfsResourceExtendDir, NtfsOwns_Quota},
  567. {NtfsOwns_File_Quota, NtfsResourceFile, NtfsOwns_Quota},
  568. {NtfsOwns_File_ObjectId_Reparse, NtfsResourceReparseTable, NtfsOwns_File_ObjectId},
  569. {NtfsOwns_LogFile, NtfsResourceLogFile, None},
  570. {NtfsOwns_Mft_File, NtfsResourceFile, NtfsOwns_Mft},
  571. {NtfsOwns_Mft_File_Quota, NtfsResourceMft, NtfsOwns_File_Quota},
  572. {NtfsOwns_Mft_File_Quota, NtfsResourceQuotaTable, NtfsOwns_Mft_File},
  573. {NtfsOwns_Mft_File_ObjectId_Quota, NtfsResourceQuotaTable, NtfsOwns_Mft_File_ObjectId},
  574. {NtfsOwns_Mft_File_Secure, NtfsResourceSecure, NtfsOwns_Mft_File},
  575. {NtfsOwns_Mft_File_ObjectId_Reparse, NtfsResourceMft, NtfsOwns_File_ObjectId_Reparse},
  576. {NtfsOwns_Mft_Volume_Bitmap, NtfsResourceBitmap, NtfsOwns_Mft_Volume},
  577. {NtfsOwns_Mft_Extend_Journal, NtfsResourceUsnJournal, NtfsOwns_Mft_Extend}, // CreateNew or Delete Journal
  578. {NtfsOwns_Mft_Extend_Journal, NtfsResourceMft, NtfsOwns_Extend_Journal}, // "Create" Existing journal
  579. {NtfsOwns_Mft_Extend, NtfsResourceMft, NtfsOwns_Extend},
  580. {NtfsOwns_Mft_Extend, NtfsResourceExtendDir, NtfsOwns_Mft},
  581. {NtfsOwns_Extend_Journal, NtfsResourceUsnJournal, NtfsOwns_Extend},
  582. {NtfsOwns_Volume_ObjectId, NtfsResourceObjectIdTable, NtfsOwns_Volume},
  583. //
  584. // Result of teardown
  585. //
  586. {NtfsOwns_Vcb_Root_File, NtfsResourceFile, NtfsOwns_Vcb_Root},
  587. {NtfsOwns_Vcb_Root_Upcase, NtfsResourceUpCase, NtfsOwns_Vcb_Root},
  588. {NtfsOwns_Vcb_Root_Boot, NtfsResourceBoot, NtfsOwns_Vcb_Root},
  589. {NtfsOwns_Vcb_Mft_File, NtfsResourceFile, NtfsOwns_Vcb_Mft},
  590. {NtfsOwns_Vcb_Mft_Root, NtfsResourceRootDir, NtfsOwns_Vcb_Mft},
  591. {NtfsOwns_Vcb_Mft_Root_File, NtfsResourceFile, NtfsOwns_Vcb_Mft_Root},
  592. {NtfsOwns_Vcb_Mft_Root_File_Journal, NtfsResourceFile, NtfsOwns_Vcb_Mft_Root_Journal},
  593. {NtfsOwns_Vcb_File_Quota, NtfsResourceFile, NtfsOwns_Vcb_Quota}, // reepair quota index
  594. {NtfsOwns_ExVcb_Mft_Extend_Journal, NtfsResourceUsnJournal, NtfsOwns_ExVcb_Mft_Extend},
  595. {NtfsOwns_ExVcb_Quota_Reparse_Extend, NtfsResourceReparseTable, NtfsOwns_ExVcb_Quota_Extend},
  596. {NtfsOwns_ExVcb_Quota_ObjectId_Extend, NtfsResourceObjectIdTable, NtfsOwns_ExVcb_Quota_Extend},
  597. {NtfsOwns_ExVcb_Quota_Extend, NtfsResourceExtendDir, NtfsOwns_ExVcb_Quota},
  598. {NtfsOwns_ExVcb_Root_File_Volume, NtfsResourceFile, NtfsOwns_ExVcb_Root_Volume},
  599. {NtfsOwns_ExVcb_Mft_Root_File, NtfsResourceFile, NtfsOwns_ExVcb_Mft_Root},
  600. //
  601. // Interlocked create release
  602. //
  603. {NtfsOwns_Vcb_Root_File, NtfsResourceRootDir, NtfsOwns_Vcb_File},
  604. {NtfsOwns_Vcb_Root_Extend, NtfsResourceRootDir, NtfsOwns_Vcb_Extend},
  605. {NtfsOwns_Vcb_Mft_File, NtfsResourceMft, NtfsOwns_Vcb_File},
  606. {NtfsOwns_Vcb_Mft_Root_File, NtfsResourceRootDir, NtfsOwns_Vcb_Mft_File},
  607. {NtfsOwns_Vcb_Extend, NtfsResourceExtendDir, NtfsOwns_Vcb},
  608. {NtfsOwns_Vcb_Mft_BadClust, NtfsResourceMft, NtfsOwns_Vcb_BadClust}, // openbyid
  609. {NtfsOwns_Vcb_Mft_Bitmap, NtfsResourceMft, NtfsOwns_Vcb_Bitmap}, // openbyid
  610. {NtfsOwns_Vcb_Mft_Boot, NtfsResourceMft, NtfsOwns_Vcb_Boot}, // openbyid
  611. {NtfsOwns_Vcb_Mft_Extend, NtfsResourceMft, NtfsOwns_Vcb_Extend}, // byid
  612. {NtfsOwns_Vcb_Mft_LogFile, NtfsResourceMft, NtfsOwns_Vcb_LogFile},
  613. {NtfsOwns_Vcb_Mft_Mft2, NtfsResourceMft, NtfsOwns_Vcb_Mft2}, // openbyid
  614. {NtfsOwns_Vcb_Mft_ObjectId, NtfsResourceMft, NtfsOwns_Vcb_ObjectId},
  615. {NtfsOwns_Vcb_Mft_Quota, NtfsResourceMft, NtfsOwns_Vcb_Quota},
  616. {NtfsOwns_Vcb_Mft_Reparse, NtfsResourceMft, NtfsOwns_Vcb_Reparse},
  617. {NtfsOwns_Vcb_Mft_Secure, NtfsResourceMft, NtfsOwns_Vcb_Secure},
  618. {NtfsOwns_Vcb_Mft_Upcase, NtfsResourceMft, NtfsOwns_Vcb_Upcase}, // openbyid
  619. {NtfsOwns_ExVcb_Root_File, NtfsResourceRootDir, NtfsOwns_ExVcb_File},
  620. //
  621. // vcb releases
  622. //
  623. {NtfsOwns_Vcb_File, NtfsResourceSharedVcb, NtfsOwns_File},
  624. {NtfsOwns_Vcb_File_Quota, NtfsResourceSharedVcb, NtfsOwns_File_Quota},
  625. {NtfsOwns_Vcb_File_ObjectId, NtfsResourceSharedVcb, NtfsOwns_File_ObjectId},
  626. {NtfsOwns_Vcb_File_Reparse, NtfsResourceSharedVcb, NtfsOwns_File_Reparse},
  627. {NtfsOwns_Vcb_File_Secure, NtfsResourceSharedVcb, NtfsOwns_File_Secure},
  628. {NtfsOwns_Vcb_Volume, NtfsResourceSharedVcb, NtfsOwns_Volume},
  629. {NtfsOwns_Vcb_Root, NtfsResourceSharedVcb, NtfsOwns_Root},
  630. {NtfsOwns_Vcb_Root_Extend, NtfsResourceSharedVcb, NtfsOwns_Root_Extend},
  631. {NtfsOwns_Vcb_Mft, NtfsResourceSharedVcb, NtfsOwns_Mft},
  632. {NtfsOwns_Vcb_Reparse, NtfsResourceSharedVcb, NtfsOwns_Reparse},
  633. {NtfsOwns_Vcb_ObjectId, NtfsResourceSharedVcb, NtfsOwns_ObjectId},
  634. {NtfsOwns_Vcb_Root_File, NtfsResourceSharedVcb, NtfsOwns_Root_File},
  635. {NtfsOwns_Vcb_Root_File_Quota, NtfsResourceSharedVcb, NtfsOwns_Root_File_Quota},
  636. {NtfsOwns_Vcb_Root_Quota, NtfsResourceSharedVcb, NtfsOwns_Root_Quota},
  637. {NtfsOwns_Vcb_Mft_Root, NtfsResourceSharedVcb, NtfsOwns_Root_Mft},
  638. {NtfsOwns_Vcb_Mft_Root_File_Journal, NtfsResourceSharedVcb, NtfsOwns_Root_Mft_File_Journal},
  639. {NtfsOwns_Vcb_Mft_Root_File_Quota, NtfsResourceSharedVcb, NtfsOwns_Root_Mft_File_Quota},
  640. {NtfsOwns_Vcb_Mft_Root_File_ObjectId, NtfsResourceSharedVcb, NtfsOwns_Root_Mft_File_ObjectId},
  641. {NtfsOwns_Vcb_Mft_Root_File_ObjectId_Quota, NtfsResourceSharedVcb, NtfsOwns_Root_Mft_File_ObjectId_Quota},
  642. {NtfsOwns_Vcb_Mft_Root_File, NtfsResourceSharedVcb, NtfsOwns_Root_Mft_File},
  643. {NtfsOwns_Vcb_Mft_Root_Journal, NtfsResourceSharedVcb, NtfsOwns_Root_Mft_Journal},
  644. {NtfsOwns_Vcb_Mft_File_Quota, NtfsResourceSharedVcb, NtfsOwns_Mft_File_Quota},
  645. {NtfsOwns_Vcb_Mft_File, NtfsResourceSharedVcb, NtfsOwns_Mft_File},
  646. {NtfsOwns_Vcb_Mft_File_ObjectId, NtfsResourceSharedVcb, NtfsOwns_Mft_File_ObjectId},
  647. {NtfsOwns_Vcb_Mft_File_Secure, NtfsResourceSharedVcb, NtfsOwns_Mft_File_Secure},
  648. {NtfsOwns_Vcb_Mft_File_Reparse, NtfsResourceSharedVcb, NtfsOwns_Mft_File_Reparse},
  649. {NtfsOwns_Vcb_Mft_File_Journal, NtfsResourceSharedVcb, NtfsOwns_Mft_File_Journal},
  650. {NtfsOwns_Vcb_Mft_File_Journal, NtfsResourceSharedVcb, NtfsOwns_Mft_File_Journal},
  651. {NtfsOwns_Vcb_Mft_File_ObjectId_Quota, NtfsResourceSharedVcb, NtfsOwns_Mft_File_ObjectId_Quota},
  652. {NtfsOwns_Vcb_Mft_File_ObjectId_Journal, NtfsResourceSharedVcb, NtfsOwns_Mft_File_ObjectId_Journal},
  653. {NtfsOwns_Vcb_Mft_File_ObjectId_Reparse, NtfsResourceSharedVcb, NtfsOwns_Mft_File_ObjectId_Reparse},
  654. {NtfsOwns_Vcb_Mft_Volume_Bitmap, NtfsResourceSharedVcb, NtfsOwns_Mft_Volume_Bitmap},
  655. {NtfsOwns_Vcb_Extend_Reparse, NtfsResourceSharedVcb, NtfsOwns_Extend_Reparse},
  656. {NtfsOwns_Vcb_Extend_ObjectId, NtfsResourceSharedVcb, NtfsOwns_Extend_ObjectId},
  657. {NtfsOwns_Vcb_Extend_Quota, NtfsResourceSharedVcb, NtfsOwns_Extend_Quota},
  658. {NtfsOwns_Vcb_Extend_Journal, NtfsResourceSharedVcb, NtfsOwns_Extend_Journal},
  659. {NtfsOwns_Vcb_BadClust, NtfsResourceSharedVcb, NtfsOwns_BadClust},
  660. {NtfsOwns_Vcb_Bitmap, NtfsResourceSharedVcb, NtfsOwns_Bitmap},
  661. {NtfsOwns_Vcb_Boot, NtfsResourceSharedVcb, NtfsOwns_Boot},
  662. {NtfsOwns_Vcb_Quota, NtfsResourceSharedVcb, NtfsOwns_Quota},
  663. {NtfsOwns_Vcb_Root_Mft2, NtfsResourceSharedVcb, NtfsOwns_Root_Mft2},
  664. {NtfsOwns_Vcb_Mft2, NtfsResourceSharedVcb, NtfsOwns_Mft2},
  665. {NtfsOwns_Vcb_Root_Upcase, NtfsResourceSharedVcb, NtfsOwns_Root_Upcase},
  666. {NtfsOwns_Vcb_Root_LogFile, NtfsResourceSharedVcb, NtfsOwns_Root_LogFile},
  667. {NtfsOwns_Vcb_Root_Secure, NtfsResourceSharedVcb, NtfsOwns_Root_Secure},
  668. {NtfsOwns_Vcb_Root_BadClust, NtfsResourceSharedVcb, NtfsOwns_Root_BadClust},
  669. {NtfsOwns_Vcb_Upcase, NtfsResourceSharedVcb, NtfsOwns_Upcase},
  670. {NtfsOwns_Vcb_Secure, NtfsResourceSharedVcb, NtfsOwns_Secure},
  671. {NtfsOwns_Vcb_Extend, NtfsResourceSharedVcb, NtfsOwns_Extend},
  672. {NtfsOwns_Vcb_Journal, NtfsResourceSharedVcb, NtfsOwns_Journal},
  673. {NtfsOwns_Vcb_LogFile, NtfsResourceSharedVcb, NtfsOwns_LogFile},
  674. {NtfsOwns_Vcb_ObjectId, NtfsResourceSharedVcb, NtfsOwns_ObjectId},
  675. {NtfsOwns_ExVcb_File, NtfsResourceExVcb, NtfsOwns_File},
  676. {NtfsOwns_ExVcb_Root_File, NtfsResourceExVcb, NtfsOwns_Root_File},
  677. {NtfsOwns_ExVcb_Root_File_ObjectId_Extend, NtfsResourceExVcb, NtfsOwns_Root_File_ObjectId_Extend},
  678. {NtfsOwns_ExVcb_Root_File_Quota, NtfsResourceExVcb, NtfsOwns_Root_File_Quota},
  679. {NtfsOwns_ExVcb_Root_File_Quota_Mft, NtfsResourceExVcb, NtfsOwns_Root_Mft_File_Quota},
  680. {NtfsOwns_ExVcb_Mft, NtfsResourceExVcb, NtfsOwns_Mft},
  681. {NtfsOwns_ExVcb_Mft_Root, NtfsResourceExVcb, NtfsOwns_Root_Mft},
  682. {NtfsOwns_ExVcb_Mft_Root_File, NtfsResourceExVcb, NtfsOwns_Root_Mft_File},
  683. {NtfsOwns_ExVcb_Mft_File_Journal, NtfsResourceExVcb, NtfsOwns_Mft_File_Journal},
  684. {NtfsOwns_ExVcb_Mft_Extend_Journal, NtfsResourceExVcb, NtfsOwns_Mft_Extend_Journal},
  685. {NtfsOwns_ExVcb_Mft_Extend, NtfsResourceExVcb, NtfsOwns_Mft_Extend},
  686. {NtfsOwns_ExVcb_Mft_Journal, NtfsResourceExVcb, NtfsOwns_Mft_Journal},
  687. {NtfsOwns_ExVcb_Journal, NtfsResourceExVcb, NtfsOwns_Journal},
  688. {NtfsOwns_ExVcb_Volume, NtfsResourceExVcb, NtfsOwns_Volume},
  689. {NtfsOwns_ExVcb_Volume_ObjectId, NtfsResourceExVcb, NtfsOwns_Volume_ObjectId},
  690. //
  691. // ReleaseAllFiles
  692. //
  693. {NtfsOwns_ExVcb_ObjectId_Extend, NtfsResourceExtendDir, NtfsOwns_ExVcb_ObjectId},
  694. {NtfsOwns_ExVcb_ObjectId, NtfsResourceObjectIdTable, NtfsOwns_ExVcb},
  695. {NtfsOwns_ExVcb_Root_ObjectId_Secure, NtfsResourceRootDir, NtfsOwns_ExVcb_ObjectId_Secure},
  696. {NtfsOwns_ExVcb_ObjectId_Secure, NtfsResourceSecure, NtfsOwns_ExVcb_ObjectId},
  697. {NtfsOwns_ExVcb_Root_File_ObjectId_Secure, NtfsResourceRootDir, NtfsOwns_ExVcb_File_ObjectId_Secure},
  698. {NtfsOwns_ExVcb_File_ObjectId_Secure, NtfsResourceFile, NtfsOwns_ExVcb_ObjectId_Secure},
  699. {NtfsOwns_ExVcb_Root_File_Volume_ObjectId, NtfsResourceRootDir, NtfsOwns_ExVcb_File_Volume_ObjectId},
  700. {NtfsOwns_ExVcb_File_Volume_ObjectId, NtfsResourceFile, NtfsOwns_ExVcb_Volume_ObjectId},
  701. //
  702. // Shared out of order release
  703. //
  704. {NtfsOwns_Root_Quota, NtfsResourceRootDir, NtfsOwns_Quota},
  705. {NtfsOwns_Vcb_Mft_Root_File_ObjectId, NtfsResourceRootDir, NtfsOwns_Vcb_Mft_File_ObjectId},
  706. {NtfsOwns_Vcb_Root_File_ObjectId, NtfsResourceRootDir, NtfsOwns_Vcb_File_ObjectId}, // cleanup
  707. {NtfsOwns_Root_File_Quota, NtfsResourceRootDir, NtfsOwns_File_Quota},
  708. {NtfsOwns_Vcb_Mft_Root_File_Quota, NtfsResourceRootDir, NtfsOwns_Vcb_Mft_File_Quota}, // cleanup
  709. {NtfsOwns_Vcb_Mft_Root_File_Quota, NtfsResourceRootDir, NtfsOwns_Vcb_Mft_File_Quota}, // cleanup
  710. //
  711. // SetObjectIdInternal Paths - out of order file release
  712. //
  713. {NtfsOwns_Mft_File_ObjectId_Journal, NtfsResourceFile, NtfsOwns_Mft_ObjectId_Journal},
  714. {NtfsOwns_Mft_ObjectId_Journal, NtfsResourceUsnJournal, NtfsOwns_Mft_ObjectId},
  715. {NtfsOwns_Mft_ObjectId, NtfsResourceMft, NtfsOwns_ObjectId},
  716. {NtfsOwns_Mft_File_Journal, NtfsResourceFile, NtfsOwns_Mft_Journal},
  717. //
  718. // Misc.
  719. //
  720. {NtfsOwns_Mft_Volume, NtfsResourceVolume, NtfsOwns_Mft}, // GetMftRecord
  721. {NtfsOwns_ExVcb_Mft_Journal, NtfsResourceMft, NtfsOwns_ExVcb_Journal}, // initjrnl
  722. {NtfsOwns_ExVcb_Mft_Extend, NtfsResourceMft, NtfsOwns_ExVcb_Extend}, // deletejrnl
  723. //
  724. // NtfsResourceAny def. backpaths
  725. //
  726. {NtfsOwns_ExVcb, NtfsResourceAny, NtfsOwns_ExVcb},
  727. {NtfsOwns_ExVcb_File, NtfsResourceAny, NtfsOwns_ExVcb_File},
  728. {NtfsOwns_ExVcb_ObjectId_Secure, NtfsResourceAny, NtfsOwns_ExVcb_ObjectId_Secure},
  729. {NtfsOwns_ExVcb_Quota_Reparse_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Quota_Reparse_ObjectId},
  730. {NtfsOwns_ExVcb_Quota, NtfsResourceAny, NtfsOwns_ExVcb_Quota},
  731. {NtfsOwns_ExVcb_Root, NtfsResourceAny, NtfsOwns_ExVcb_Root},
  732. {NtfsOwns_ExVcb_Root_File_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_ObjectId},
  733. {NtfsOwns_ExVcb_Root_File_ObjectId_Secure, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_ObjectId_Secure},
  734. {NtfsOwns_ExVcb_Root_Volume_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Root_Volume_ObjectId},
  735. {NtfsOwns_ExVcb_Volume, NtfsResourceAny, NtfsOwns_ExVcb_Volume},
  736. {NtfsOwns_ExVcb_Volume_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Volume_ObjectId},
  737. {NtfsOwns_Root_File_ObjectId_Extend, NtfsResourceAny, NtfsOwns_Root_File_ObjectId_Extend} // acquire all files + exception and transaction
  738. };
  739. //
  740. // Acquire Only transtions
  741. //
  742. NTFS_OWNERSHIP_TRANSITION OwnershipTransitionTableAcquire[] =
  743. {
  744. //
  745. // Any relations
  746. //
  747. {NtfsOwns_ExVcb, NtfsResourceAny, NtfsOwns_ExVcb},
  748. {NtfsOwns_ExVcb_Volume, NtfsResourceAny, NtfsOwns_ExVcb_Volume},
  749. {NtfsOwns_ExVcb_File, NtfsResourceAny, NtfsOwns_ExVcb_File},
  750. {NtfsOwns_ExVcb_File_Secure, NtfsResourceAny, NtfsOwns_ExVcb_File_Secure},
  751. {NtfsOwns_ExVcb_ObjectId_Extend, NtfsResourceAny, NtfsOwns_ExVcb_ObjectId_Extend},
  752. {NtfsOwns_ExVcb_Root_File_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_ObjectId},
  753. {NtfsOwns_ExVcb_Root_File_ObjectId_Extend, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_ObjectId_Extend},
  754. {NtfsOwns_ExVcb_Root_Volume_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Root_Volume_ObjectId},
  755. //
  756. // Acquire all files
  757. //
  758. {NtfsOwns_ExVcb_Root_ObjectId_Secure, NtfsResourceAny, NtfsOwns_ExVcb_Root_ObjectId_Secure}, // no userfiles
  759. {NtfsOwns_ExVcb_Root_File_ObjectId_Secure, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_ObjectId_Secure}, // userfile
  760. {NtfsOwns_ExVcb_Root_File_Volume_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Root_File_Volume_ObjectId}, // from volopen
  761. {NtfsOwns_ExVcb_Quota, NtfsResourceAny, NtfsOwns_ExVcb_Quota},
  762. {NtfsOwns_ExVcb_Quota_Extend, NtfsResourceAny, NtfsOwns_ExVcb_Quota_Extend},
  763. {NtfsOwns_ExVcb_Quota_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Quota_ObjectId},
  764. {NtfsOwns_ExVcb_Quota_Reparse_Extend, NtfsResourceAny, NtfsOwns_ExVcb_Quota_Reparse_Extend},
  765. {NtfsOwns_ExVcb_Quota_Reparse_ObjectId, NtfsResourceAny, NtfsOwns_ExVcb_Quota_Reparse_ObjectId}
  766. };
  767. //
  768. // Unsafe Transitions
  769. //
  770. NTFS_OWNERSHIP_TRANSITION OwnershipTransitionTableUnsafe[] =
  771. {
  772. //
  773. // unsafe create path
  774. //
  775. {NtfsOwns_Vcb_Extend, NtfsResourceReparseTable, NtfsOwns_Vcb_Extend_Reparse},
  776. {NtfsOwns_Vcb_Extend, NtfsResourceObjectIdTable, NtfsOwns_Vcb_Extend_ObjectId},
  777. {NtfsOwns_Vcb_Extend, NtfsResourceQuotaTable, NtfsOwns_Vcb_Extend_Quota},
  778. {NtfsOwns_Vcb_Extend, NtfsResourceUsnJournal, NtfsOwns_Vcb_Extend_Journal},
  779. {NtfsOwns_Vcb_Root, NtfsResourceExtendDir, NtfsOwns_Vcb_Root_Extend},
  780. {NtfsOwns_Vcb_Root, NtfsResourceFile, NtfsOwns_Vcb_Root_File},
  781. {NtfsOwns_Vcb_Root, NtfsResourceUpCase, NtfsOwns_Vcb_Root_Upcase},
  782. {NtfsOwns_Vcb_Root, NtfsResourceBoot, NtfsOwns_Vcb_Root_Boot},
  783. {NtfsOwns_Vcb_Root, NtfsResourceBadClust, NtfsOwns_Vcb_Root_BadClust},
  784. {NtfsOwns_Vcb_Root, NtfsResourceLogFile, NtfsOwns_Vcb_Root_LogFile},
  785. //
  786. // NewFile - byid
  787. //
  788. {NtfsOwns_Vcb_Mft_Root, NtfsResourceFile, NtfsOwns_Vcb_Mft_Root_File},
  789. {NtfsOwns_ExVcb_Mft_Root, NtfsResourceFile, NtfsOwns_ExVcb_Mft_Root_File}, // create pagingfile
  790. {NtfsOwns_Vcb_Mft_Root_Quota, NtfsResourceFile, NtfsOwns_Vcb_Mft_Root_File_Quota},
  791. {NtfsOwns_Vcb_Mft, NtfsResourceBadClust, NtfsOwns_Vcb_Mft_BadClust},
  792. {NtfsOwns_Vcb_Mft, NtfsResourceBoot, NtfsOwns_Vcb_Mft_Boot},
  793. {NtfsOwns_Vcb_Mft, NtfsResourceBitmap, NtfsOwns_Vcb_Mft_Bitmap},
  794. {NtfsOwns_Vcb_Mft, NtfsResourceRootDir, NtfsOwns_Vcb_Mft_Root},
  795. {NtfsOwns_Vcb_Mft, NtfsResourceFile, NtfsOwns_Vcb_Mft_File},
  796. {NtfsOwns_Vcb_Mft, NtfsResourceMft2, NtfsOwns_Vcb_Mft_Mft2},
  797. {NtfsOwns_Vcb_Mft, NtfsResourceUpCase, NtfsOwns_Vcb_Mft_Upcase},
  798. {NtfsOwns_Vcb_Mft, NtfsResourceExtendDir, NtfsOwns_Vcb_Mft_Extend},
  799. {NtfsOwns_Vcb_Mft, NtfsResourceLogFile, NtfsOwns_Vcb_Mft_LogFile},
  800. {NtfsOwns_Vcb_Mft, NtfsResourceSecure, NtfsOwns_Vcb_Mft_Secure},
  801. {NtfsOwns_Vcb_Mft, NtfsResourceObjectIdTable, NtfsOwns_Vcb_Mft_ObjectId},
  802. {NtfsOwns_Vcb_Mft, NtfsResourceQuotaTable, NtfsOwns_Vcb_Mft_Quota},
  803. {NtfsOwns_Vcb_Mft, NtfsResourceReparseTable, NtfsOwns_Vcb_Mft_Reparse},
  804. {NtfsOwns_Vcb_Mft_Root_ObjectId, NtfsResourceFile, NtfsOwns_Vcb_Mft_Root_File_ObjectId},
  805. //
  806. // DeleteUnsJrnl
  807. //
  808. {NtfsOwns_ExVcb_Extend, NtfsResourceUsnJournal, NtfsOwns_ExVcb_Extend_Journal},
  809. //
  810. // CreateUsnJrnl
  811. //
  812. {NtfsOwns_ExVcb_Mft_Extend, NtfsResourceFile, NtfsOwns_ExVcb_Mft_Extend_File},
  813. //
  814. // Close path
  815. //
  816. {NtfsOwns_File, NtfsResourceSharedVcb, NtfsOwns_Vcb_File},
  817. {NtfsOwns_File_Reparse, NtfsResourceSharedVcb, NtfsOwns_Vcb_File_Reparse},
  818. {NtfsOwns_Mft_File_Reparse_Journal, NtfsResourceSharedVcb, NtfsOwns_Vcb_Mft_File_Reparse_Journal},
  819. //
  820. // dirctrl
  821. //
  822. {NtfsOwns_Root, NtfsResourceFile, NtfsOwns_Root_File},
  823. //
  824. // Teardown in create
  825. //
  826. {NtfsOwns_Vcb_Mft_File, NtfsResourceRootDir, NtfsOwns_Vcb_Mft_Root_File}
  827. };
  828. #endif
  829. #endif