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.

643 lines
21 KiB

  1. #include "NtfsProc.h"
  2. #include <stdio.h>
  3. #define doit(a,b) { printf("%s %04lx %4lx %s\n", #a, FIELD_OFFSET(a,b), sizeof(d.b), #b); }
  4. void __cdecl main()
  5. {
  6. printf("<Record> <offset> <size> <field>\n\n");
  7. {
  8. NTFS_DATA d;
  9. doit( NTFS_DATA, NodeTypeCode );
  10. doit( NTFS_DATA, NodeByteSize );
  11. doit( NTFS_DATA, DriverObject );
  12. doit( NTFS_DATA, VcbQueue );
  13. doit( NTFS_DATA, Resource );
  14. doit( NTFS_DATA, AsyncCloseList );
  15. doit( NTFS_DATA, AsyncCloseActive );
  16. doit( NTFS_DATA, ReduceDelayedClose );
  17. doit( NTFS_DATA, AsyncCloseCount );
  18. doit( NTFS_DATA, OurProcess );
  19. doit( NTFS_DATA, DelayedCloseCount );
  20. doit( NTFS_DATA, DelayedCloseList );
  21. doit( NTFS_DATA, NtfsCloseItem );
  22. doit( NTFS_DATA, FreeFcbTableSize );
  23. doit( NTFS_DATA, UnusedUchar );
  24. doit( NTFS_DATA, FreeFcbTableArray );
  25. doit( NTFS_DATA, FreeEresourceSize );
  26. doit( NTFS_DATA, FreeEresourceTotal );
  27. doit( NTFS_DATA, FreeEresourceMiss );
  28. doit( NTFS_DATA, FreeEresourceArray );
  29. doit( NTFS_DATA, CacheManagerCallbacks );
  30. doit( NTFS_DATA, CacheManagerVolumeCallbacks );
  31. doit( NTFS_DATA, VolumeCheckpointDpc );
  32. doit( NTFS_DATA, VolumeCheckpointTimer );
  33. doit( NTFS_DATA, VolumeCheckpointItem );
  34. doit( NTFS_DATA, Flags );
  35. doit( NTFS_DATA, ReadAheadThreads );
  36. }
  37. printf("\n");
  38. {
  39. RECORD_ALLOCATION_CONTEXT d;
  40. doit( RECORD_ALLOCATION_CONTEXT, DataScb );
  41. doit( RECORD_ALLOCATION_CONTEXT, BitmapScb );
  42. doit( RECORD_ALLOCATION_CONTEXT, CurrentBitmapSize );
  43. doit( RECORD_ALLOCATION_CONTEXT, NumberOfFreeBits );
  44. doit( RECORD_ALLOCATION_CONTEXT, IndexOfLastSetBit );
  45. doit( RECORD_ALLOCATION_CONTEXT, BytesPerRecord );
  46. doit( RECORD_ALLOCATION_CONTEXT, ExtendGranularity );
  47. doit( RECORD_ALLOCATION_CONTEXT, TruncateGranularity );
  48. }
  49. printf("\n");
  50. {
  51. RESTART_POINTERS d;
  52. doit( RESTART_POINTERS, Resource );
  53. doit( RESTART_POINTERS, Table );
  54. doit( RESTART_POINTERS, SpinLock );
  55. doit( RESTART_POINTERS, ResourceInitialized );
  56. doit( RESTART_POINTERS, Unused );
  57. }
  58. printf("\n");
  59. {
  60. NTFS_MCB_ENTRY d;
  61. doit( NTFS_MCB_ENTRY, LruLinks );
  62. doit( NTFS_MCB_ENTRY, NtfsMcb );
  63. doit( NTFS_MCB_ENTRY, NtfsMcbArray );
  64. doit( NTFS_MCB_ENTRY, LargeMcb );
  65. }
  66. printf("\n");
  67. {
  68. NTFS_MCB_ARRAY d;
  69. doit( NTFS_MCB_ARRAY, StartingVcn );
  70. doit( NTFS_MCB_ARRAY, EndingVcn );
  71. doit( NTFS_MCB_ARRAY, NtfsMcbEntry );
  72. doit( NTFS_MCB_ARRAY, Unused );
  73. }
  74. printf("\n");
  75. {
  76. NTFS_MCB d;
  77. doit( NTFS_MCB, FcbHeader );
  78. doit( NTFS_MCB, PoolType );
  79. doit( NTFS_MCB, NtfsMcbArraySizeInUse );
  80. doit( NTFS_MCB, NtfsMcbArraySize );
  81. doit( NTFS_MCB, NtfsMcbArray );
  82. doit( NTFS_MCB, FastMutex );
  83. }
  84. printf("\n");
  85. {
  86. DEALLOCATED_CLUSTERS d;
  87. doit( DEALLOCATED_CLUSTERS, Mcb );
  88. doit( DEALLOCATED_CLUSTERS, Lsn );
  89. doit( DEALLOCATED_CLUSTERS, ClusterCount );
  90. }
  91. printf("\n");
  92. {
  93. VCB d;
  94. doit( VCB, NodeTypeCode );
  95. doit( VCB, NodeByteSize );
  96. doit( VCB, TargetDeviceObject );
  97. doit( VCB, VcbLinks );
  98. doit( VCB, MftScb );
  99. doit( VCB, Mft2Scb );
  100. doit( VCB, LogFileScb );
  101. doit( VCB, VolumeDasdScb );
  102. doit( VCB, RootIndexScb );
  103. doit( VCB, BitmapScb );
  104. doit( VCB, AttributeDefTableScb );
  105. doit( VCB, UpcaseTableScb );
  106. doit( VCB, BadClusterFileScb );
  107. doit( VCB, QuotaTableScb );
  108. doit( VCB, MftBitmapScb );
  109. doit( VCB, LogFileObject );
  110. doit( VCB, MftReserveFlags );
  111. doit( VCB, MftDefragState );
  112. doit( VCB, VcbState );
  113. doit( VCB, Statistics );
  114. doit( VCB, CleanupCount );
  115. doit( VCB, CloseCount );
  116. doit( VCB, ReadOnlyCloseCount );
  117. doit( VCB, SystemFileCloseCount );
  118. doit( VCB, TotalClusters );
  119. doit( VCB, FreeClusters );
  120. doit( VCB, DeallocatedClusters );
  121. doit( VCB, TotalReserved );
  122. doit( VCB, FreeSpaceMcb );
  123. doit( VCB, FreeSpaceMcbMaximumSize );
  124. doit( VCB, FreeSpaceMcbTrimToSize );
  125. doit( VCB, LastBitmapHint );
  126. doit( VCB, RootLcb );
  127. doit( VCB, Vpb );
  128. doit( VCB, BigEnoughToMove );
  129. doit( VCB, DefaultBlocksPerIndexAllocationBuffer );
  130. doit( VCB, DefaultBytesPerIndexAllocationBuffer );
  131. doit( VCB, BytesPerSector );
  132. doit( VCB, BytesPerCluster );
  133. doit( VCB, BytesPerFileRecordSegment );
  134. doit( VCB, ClustersPerFileRecordSegment );
  135. doit( VCB, FileRecordsPerCluster );
  136. doit( VCB, MftStartLcn );
  137. doit( VCB, Mft2StartLcn );
  138. doit( VCB, NumberSectors );
  139. doit( VCB, VolumeSerialNumber );
  140. doit( VCB, VolumeCreationTime );
  141. doit( VCB, VolumeLastModificationTime );
  142. doit( VCB, VolumeLastChangeTime );
  143. doit( VCB, VolumeLastAccessTime );
  144. doit( VCB, ClusterMask );
  145. doit( VCB, InverseClusterMask );
  146. doit( VCB, ClusterShift );
  147. doit( VCB, MftShift );
  148. doit( VCB, MftToClusterShift );
  149. doit( VCB, ClustersPerPage );
  150. doit( VCB, MftReserved );
  151. doit( VCB, MftCushion );
  152. doit( VCB, FcbTableMutex );
  153. doit( VCB, FcbSecurityMutex );
  154. doit( VCB, CheckpointMutex );
  155. doit( VCB, CheckpointNotifyEvent );
  156. doit( VCB, CheckpointFlags );
  157. doit( VCB, AttributeFlagsMask );
  158. doit( VCB, UnusedUshort );
  159. doit( VCB, MftHoleGranularity );
  160. doit( VCB, MftFreeRecords );
  161. doit( VCB, MftHoleRecords );
  162. doit( VCB, LogHandle );
  163. doit( VCB, MftHoleMask );
  164. doit( VCB, MftHoleInverseMask );
  165. doit( VCB, MftClustersPerHole );
  166. doit( VCB, MftHoleClusterMask );
  167. doit( VCB, MftHoleClusterInverseMask );
  168. doit( VCB, LastRestartArea );
  169. doit( VCB, OpenAttributeTable );
  170. doit( VCB, LastBaseLsn );
  171. doit( VCB, TransactionTable );
  172. doit( VCB, EndOfLastCheckpoint );
  173. doit( VCB, DeviceName );
  174. doit( VCB, UpcaseTable );
  175. doit( VCB, UpcaseTableSize );
  176. doit( VCB, FcbTable );
  177. doit( VCB, DirNotifyList );
  178. doit( VCB, NotifySync );
  179. doit( VCB, FileObjectWithVcbLocked );
  180. doit( VCB, MftZoneStart );
  181. doit( VCB, MftZoneEnd );
  182. doit( VCB, PriorDeallocatedClusters );
  183. doit( VCB, ActiveDeallocatedClusters );
  184. doit( VCB, DeallocatedClusters1 );
  185. doit( VCB, DeallocatedClusters2 );
  186. doit( VCB, MftBitmapAllocationContext );
  187. doit( VCB, Resource );
  188. doit( VCB, AttributeDefinitions );
  189. doit( VCB, LogHeaderReservation );
  190. doit( VCB, Tunnel );
  191. }
  192. printf("\n");
  193. {
  194. VOLUME_DEVICE_OBJECT d;
  195. doit( VOLUME_DEVICE_OBJECT, DeviceObject );
  196. doit( VOLUME_DEVICE_OBJECT, PostedRequestCount );
  197. doit( VOLUME_DEVICE_OBJECT, OverflowQueueCount );
  198. doit( VOLUME_DEVICE_OBJECT, OverflowQueue );
  199. doit( VOLUME_DEVICE_OBJECT, OverflowQueueSpinLock );
  200. doit( VOLUME_DEVICE_OBJECT, Vcb );
  201. }
  202. printf("\n");
  203. {
  204. QUICK_INDEX d;
  205. doit( QUICK_INDEX, ChangeCount );
  206. doit( QUICK_INDEX, BufferOffset );
  207. doit( QUICK_INDEX, CapturedLsn );
  208. doit( QUICK_INDEX, IndexBlock );
  209. }
  210. printf("\n");
  211. {
  212. NAME_LINK d;
  213. doit( NAME_LINK, LinkName );
  214. doit( NAME_LINK, Links );
  215. }
  216. printf("\n");
  217. {
  218. LCB d;
  219. doit( LCB, NodeTypeCode );
  220. doit( LCB, NodeByteSize );
  221. doit( LCB, LcbState );
  222. doit( LCB, ScbLinks );
  223. doit( LCB, Scb );
  224. doit( LCB, CleanupCount );
  225. doit( LCB, FcbLinks );
  226. doit( LCB, Fcb );
  227. doit( LCB, ReferenceCount );
  228. doit( LCB, IgnoreCaseLink );
  229. doit( LCB, InfoFlags );
  230. doit( LCB, OverlayParentDirectory );
  231. doit( LCB, CcbQueue );
  232. doit( LCB, ExactCaseLink );
  233. doit( LCB, FileNameAttr );
  234. doit( LCB, QuickIndex );
  235. doit( LCB, OverlayFileNameLength );
  236. doit( LCB, OverlayFlags );
  237. doit( LCB, OverlayFileName );
  238. }
  239. printf("\n");
  240. {
  241. FCB d;
  242. doit( FCB, NodeTypeCode );
  243. doit( FCB, NodeByteSize );
  244. doit( FCB, FcbState );
  245. doit( FCB, FileReference );
  246. doit( FCB, CleanupCount );
  247. doit( FCB, CloseCount );
  248. doit( FCB, ReferenceCount );
  249. doit( FCB, FcbDenyDelete );
  250. doit( FCB, FcbDeleteFile );
  251. doit( FCB, BaseExclusiveCount );
  252. doit( FCB, EaModificationCount );
  253. doit( FCB, LcbQueue );
  254. doit( FCB, ScbQueue );
  255. doit( FCB, ExclusiveFcbLinks );
  256. doit( FCB, Vcb );
  257. doit( FCB, FcbMutex );
  258. doit( FCB, Resource );
  259. doit( FCB, PagingIoResource );
  260. doit( FCB, Info );
  261. doit( FCB, InfoFlags );
  262. doit( FCB, LinkCount );
  263. doit( FCB, TotalLinks );
  264. doit( FCB, CurrentLastAccess );
  265. doit( FCB, SharedSecurity );
  266. doit( FCB, QuotaControl );
  267. doit( FCB, UpdateLsn );
  268. doit( FCB, ClassId );
  269. doit( FCB, OwnerId );
  270. doit( FCB, DelayedCloseCount );
  271. doit( FCB, SecurityId );
  272. doit( FCB, Usn );
  273. doit( FCB, FcbUsnRecord );
  274. }
  275. printf("\n");
  276. {
  277. SCB_DATA d;
  278. doit( SCB_DATA, TotalReserved );
  279. doit( SCB_DATA, Oplock );
  280. doit( SCB_DATA, FileLock );
  281. doit( SCB_DATA, ReservedBitMap );
  282. doit( SCB_DATA, PadUlong );
  283. }
  284. printf("\n");
  285. {
  286. SCB_INDEX d;
  287. doit( SCB_INDEX, RecentlyDeallocatedQueue );
  288. doit( SCB_INDEX, LcbQueue );
  289. doit( SCB_INDEX, RecordAllocationContext );
  290. doit( SCB_INDEX, ExactCaseNode );
  291. doit( SCB_INDEX, IgnoreCaseNode );
  292. doit( SCB_INDEX, NormalizedName );
  293. doit( SCB_INDEX, ChangeCount );
  294. doit( SCB_INDEX, AttributeBeingIndexed );
  295. doit( SCB_INDEX, CollationRule );
  296. doit( SCB_INDEX, BytesPerIndexBuffer );
  297. doit( SCB_INDEX, BlocksPerIndexBuffer );
  298. doit( SCB_INDEX, IndexBlockByteShift );
  299. doit( SCB_INDEX, AllocationInitialized );
  300. doit( SCB_INDEX, PadUchar );
  301. doit( SCB_INDEX, IndexDepthHint );
  302. doit( SCB_INDEX, PadUshort );
  303. }
  304. printf("\n");
  305. {
  306. SCB_MFT d;
  307. doit( SCB_MFT, RecentlyDeallocatedQueue );
  308. doit( SCB_MFT, AddedClusters );
  309. doit( SCB_MFT, RemovedClusters );
  310. doit( SCB_MFT, FreeRecordChange );
  311. doit( SCB_MFT, HoleRecordChange );
  312. doit( SCB_MFT, ReservedIndex );
  313. doit( SCB_MFT, PadUlong );
  314. }
  315. printf("\n");
  316. {
  317. SCB_NONPAGED d;
  318. doit( SCB_NONPAGED, NodeTypeCode );
  319. doit( SCB_NONPAGED, NodeByteSize );
  320. doit( SCB_NONPAGED, OpenAttributeTableIndex );
  321. doit( SCB_NONPAGED, SegmentObject );
  322. doit( SCB_NONPAGED, Vcb );
  323. }
  324. printf("\n");
  325. {
  326. SCB d;
  327. doit( SCB, Header );
  328. doit( SCB, FcbLinks );
  329. doit( SCB, Fcb );
  330. doit( SCB, Vcb );
  331. doit( SCB, ScbState );
  332. doit( SCB, NonCachedCleanupCount );
  333. doit( SCB, CleanupCount );
  334. doit( SCB, CloseCount );
  335. doit( SCB, ShareAccess );
  336. doit( SCB, AttributeTypeCode );
  337. doit( SCB, AttributeName );
  338. doit( SCB, FileObject );
  339. doit( SCB, LazyWriteThread );
  340. doit( SCB, NonpagedScb );
  341. doit( SCB, Mcb );
  342. doit( SCB, McbStructs );
  343. doit( SCB, CompressionUnit );
  344. doit( SCB, AttributeFlags );
  345. doit( SCB, CompressionUnitShift );
  346. doit( SCB, PadUchar );
  347. doit( SCB, ValidDataToDisk );
  348. doit( SCB, TotalAllocated );
  349. doit( SCB, EofListHead );
  350. doit( SCB, Union );
  351. doit( SCB, ScbSnapshot );
  352. doit( SCB, PadUlong );
  353. doit( SCB, ScbType.Data );
  354. doit( SCB, ScbType.Index );
  355. doit( SCB, ScbType.Mft );
  356. }
  357. printf("\n");
  358. {
  359. SCB_SNAPSHOT d;
  360. doit( SCB_SNAPSHOT, SnapshotLinks );
  361. doit( SCB_SNAPSHOT, AllocationSize );
  362. doit( SCB_SNAPSHOT, FileSize );
  363. doit( SCB_SNAPSHOT, ValidDataLength );
  364. doit( SCB_SNAPSHOT, ValidDataToDisk );
  365. doit( SCB_SNAPSHOT, TotalAllocated );
  366. doit( SCB_SNAPSHOT, LowestModifiedVcn );
  367. doit( SCB_SNAPSHOT, HighestModifiedVcn );
  368. doit( SCB_SNAPSHOT, Scb );
  369. doit( SCB_SNAPSHOT, Unused );
  370. }
  371. printf("\n");
  372. {
  373. CCB d;
  374. doit( CCB, NodeTypeCode );
  375. doit( CCB, NodeByteSize );
  376. doit( CCB, Flags );
  377. doit( CCB, FullFileName );
  378. doit( CCB, LastFileNameOffset );
  379. doit( CCB, EaModificationCount );
  380. doit( CCB, NextEaOffset );
  381. doit( CCB, LcbLinks );
  382. doit( CCB, Lcb );
  383. doit( CCB, TypeOfOpen );
  384. doit( CCB, PadBytes );
  385. doit( CCB, IndexContext );
  386. doit( CCB, QueryLength );
  387. doit( CCB, QueryBuffer );
  388. doit( CCB, IndexEntryLength );
  389. doit( CCB, IndexEntry );
  390. doit( CCB, FcbToAcquire.LongValue );
  391. doit( CCB, FcbToAcquire.FileReference );
  392. }
  393. printf("\n");
  394. {
  395. CCB_DATA d;
  396. doit( CCB_DATA, Opaque );
  397. }
  398. printf("\n");
  399. {
  400. FCB_DATA d;
  401. doit( FCB_DATA, Fcb );
  402. doit( FCB_DATA, Scb );
  403. doit( FCB_DATA, Ccb );
  404. doit( FCB_DATA, Lcb );
  405. doit( FCB_DATA, FileName );
  406. }
  407. printf("\n");
  408. {
  409. FCB_INDEX d;
  410. doit( FCB_INDEX, Fcb );
  411. doit( FCB_INDEX, Scb );
  412. doit( FCB_INDEX, Ccb );
  413. doit( FCB_INDEX, Lcb );
  414. doit( FCB_INDEX, FileName );
  415. }
  416. printf("\n");
  417. {
  418. IRP_CONTEXT d;
  419. doit( IRP_CONTEXT, NodeTypeCode );
  420. doit( IRP_CONTEXT, NodeByteSize );
  421. doit( IRP_CONTEXT, Flags );
  422. doit( IRP_CONTEXT, State );
  423. doit( IRP_CONTEXT, ExceptionStatus );
  424. doit( IRP_CONTEXT, TransactionId );
  425. doit( IRP_CONTEXT, MajorFunction );
  426. doit( IRP_CONTEXT, MinorFunction );
  427. doit( IRP_CONTEXT, SharedScbSize );
  428. doit( IRP_CONTEXT, SharedScb );
  429. doit( IRP_CONTEXT, CleanupStructure );
  430. doit( IRP_CONTEXT, Vcb );
  431. doit( IRP_CONTEXT, OriginatingIrp );
  432. doit( IRP_CONTEXT, TopLevelIrpContext );
  433. doit( IRP_CONTEXT, TopLevelContext );
  434. doit( IRP_CONTEXT, ExclusiveFcbList );
  435. doit( IRP_CONTEXT, RecentlyDeallocatedQueue );
  436. doit( IRP_CONTEXT, DeallocatedClusters );
  437. doit( IRP_CONTEXT, LastRestartArea );
  438. doit( IRP_CONTEXT, FreeClusterChange );
  439. doit( IRP_CONTEXT, Union.NtfsIoContext );
  440. doit( IRP_CONTEXT, Union.AuxiliaryBuffer );
  441. doit( IRP_CONTEXT, Union.SubjectContext );
  442. doit( IRP_CONTEXT, Union.OplockCleanup );
  443. doit( IRP_CONTEXT, Union.PostSpecialCallout );
  444. doit( IRP_CONTEXT, CheckNewLength );
  445. doit( IRP_CONTEXT, Usn );
  446. doit( IRP_CONTEXT, SourceInfo );
  447. doit( IRP_CONTEXT, ScbSnapshot );
  448. doit( IRP_CONTEXT, EncryptionFileDirFlags );
  449. doit( IRP_CONTEXT, EfsCreateContext );
  450. doit( IRP_CONTEXT, CacheCount );
  451. doit( IRP_CONTEXT, FileRecordCache );
  452. doit( IRP_CONTEXT, WorkQueueItem );
  453. }
  454. printf("\n");
  455. {
  456. TOP_LEVEL_CONTEXT d;
  457. doit( TOP_LEVEL_CONTEXT, TopLevelRequest );
  458. doit( TOP_LEVEL_CONTEXT, ValidSavedTopLevel );
  459. doit( TOP_LEVEL_CONTEXT, OverflowReadThread );
  460. doit( TOP_LEVEL_CONTEXT, Ntfs );
  461. doit( TOP_LEVEL_CONTEXT, VboBeingHotFixed );
  462. doit( TOP_LEVEL_CONTEXT, ScbBeingHotFixed );
  463. doit( TOP_LEVEL_CONTEXT, SavedTopLevelIrp );
  464. doit( TOP_LEVEL_CONTEXT, TopLevelIrpContext );
  465. }
  466. printf("\n");
  467. {
  468. FOUND_ATTRIBUTE d;
  469. doit( FOUND_ATTRIBUTE, MftFileOffset );
  470. doit( FOUND_ATTRIBUTE, Attribute );
  471. doit( FOUND_ATTRIBUTE, FileRecord );
  472. doit( FOUND_ATTRIBUTE, Bcb );
  473. doit( FOUND_ATTRIBUTE, AttributeDeleted );
  474. }
  475. printf("\n");
  476. {
  477. ATTRIBUTE_LIST_CONTEXT d;
  478. doit( ATTRIBUTE_LIST_CONTEXT, Entry );
  479. doit( ATTRIBUTE_LIST_CONTEXT, Bcb );
  480. doit( ATTRIBUTE_LIST_CONTEXT, AttributeList );
  481. doit( ATTRIBUTE_LIST_CONTEXT, FirstEntry );
  482. doit( ATTRIBUTE_LIST_CONTEXT, BeyondFinalEntry );
  483. doit( ATTRIBUTE_LIST_CONTEXT, NonresidentListBcb );
  484. }
  485. printf("\n");
  486. {
  487. ATTRIBUTE_ENUMERATION_CONTEXT d;
  488. doit( ATTRIBUTE_ENUMERATION_CONTEXT, FoundAttribute );
  489. doit( ATTRIBUTE_ENUMERATION_CONTEXT, AttributeList );
  490. }
  491. printf("\n");
  492. {
  493. INDEX_LOOKUP_STACK d;
  494. doit( INDEX_LOOKUP_STACK, Bcb );
  495. doit( INDEX_LOOKUP_STACK, StartOfBuffer );
  496. doit( INDEX_LOOKUP_STACK, IndexHeader );
  497. doit( INDEX_LOOKUP_STACK, IndexEntry );
  498. doit( INDEX_LOOKUP_STACK, IndexBlock );
  499. doit( INDEX_LOOKUP_STACK, CapturedLsn );
  500. }
  501. printf("\n");
  502. {
  503. INDEX_CONTEXT d;
  504. doit( INDEX_CONTEXT, AttributeContext );
  505. doit( INDEX_CONTEXT, Base );
  506. doit( INDEX_CONTEXT, Top );
  507. doit( INDEX_CONTEXT, LookupStack );
  508. doit( INDEX_CONTEXT, Current );
  509. doit( INDEX_CONTEXT, ScbChangeCount );
  510. doit( INDEX_CONTEXT, OldAttribute );
  511. doit( INDEX_CONTEXT, NumberEntries );
  512. doit( INDEX_CONTEXT, Flags );
  513. doit( INDEX_CONTEXT, AcquiredFcb );
  514. doit( INDEX_CONTEXT, Unused );
  515. }
  516. printf("\n");
  517. {
  518. NTFS_IO_CONTEXT d;
  519. doit( NTFS_IO_CONTEXT, IrpCount );
  520. doit( NTFS_IO_CONTEXT, MasterIrp );
  521. doit( NTFS_IO_CONTEXT, IrpSpFlags );
  522. doit( NTFS_IO_CONTEXT, AllocatedContext );
  523. doit( NTFS_IO_CONTEXT, PagingIo );
  524. doit( NTFS_IO_CONTEXT, Wait.Async.Resource );
  525. doit( NTFS_IO_CONTEXT, Wait.Async.ResourceThreadId );
  526. doit( NTFS_IO_CONTEXT, Wait.Async.RequestedByteCount );
  527. doit( NTFS_IO_CONTEXT, Wait.SyncEvent );
  528. }
  529. printf("\n");
  530. {
  531. IO_RUN d;
  532. doit( IO_RUN, StartingVbo );
  533. doit( IO_RUN, StartingLbo );
  534. doit( IO_RUN, BufferOffset );
  535. doit( IO_RUN, ByteCount );
  536. doit( IO_RUN, SavedIrp );
  537. doit( IO_RUN, Unused );
  538. }
  539. printf("\n");
  540. {
  541. NTFS_NAME_DESCRIPTOR d;
  542. doit( NTFS_NAME_DESCRIPTOR, FieldsPresent );
  543. doit( NTFS_NAME_DESCRIPTOR, FileName );
  544. doit( NTFS_NAME_DESCRIPTOR, AttributeType );
  545. doit( NTFS_NAME_DESCRIPTOR, AttributeName );
  546. doit( NTFS_NAME_DESCRIPTOR, VersionNumber );
  547. }
  548. printf("\n");
  549. {
  550. EA_LIST_HEADER d;
  551. doit( EA_LIST_HEADER, PackedEaSize );
  552. doit( EA_LIST_HEADER, NeedEaCount );
  553. doit( EA_LIST_HEADER, UnpackedEaSize );
  554. doit( EA_LIST_HEADER, BufferSize );
  555. doit( EA_LIST_HEADER, FullEa );
  556. }
  557. printf("\n");
  558. {
  559. DEALLOCATED_RECORDS d;
  560. doit( DEALLOCATED_RECORDS, ScbLinks );
  561. doit( DEALLOCATED_RECORDS, IrpContextLinks );
  562. doit( DEALLOCATED_RECORDS, Scb );
  563. doit( DEALLOCATED_RECORDS, NumberOfEntries );
  564. doit( DEALLOCATED_RECORDS, NextFreeEntry );
  565. doit( DEALLOCATED_RECORDS, Index );
  566. }
  567. printf("\n");
  568. {
  569. FCB_TABLE_ELEMENT d;
  570. doit( FCB_TABLE_ELEMENT, FileReference );
  571. doit( FCB_TABLE_ELEMENT, Fcb );
  572. }
  573. printf("\n");
  574. {
  575. SHARED_SECURITY d;
  576. doit( SHARED_SECURITY, ParentFcb );
  577. doit( SHARED_SECURITY, ReferenceCount );
  578. doit( SHARED_SECURITY, SecurityDescriptor );
  579. }
  580. printf("\n");
  581. {
  582. OLD_SCB_SNAPSHOT d;
  583. doit( OLD_SCB_SNAPSHOT, AllocationSize );
  584. doit( OLD_SCB_SNAPSHOT, FileSize );
  585. doit( OLD_SCB_SNAPSHOT, ValidDataLength );
  586. doit( OLD_SCB_SNAPSHOT, TotalAllocated );
  587. doit( OLD_SCB_SNAPSHOT, CompressionUnit );
  588. doit( OLD_SCB_SNAPSHOT, Resident );
  589. doit( OLD_SCB_SNAPSHOT, AttributeFlags );
  590. }
  591. printf("\n");
  592. {
  593. READ_AHEAD_THREAD d;
  594. doit( READ_AHEAD_THREAD, Links );
  595. doit( READ_AHEAD_THREAD, Thread );
  596. }
  597. printf("\n");
  598. {
  599. DEFRAG_MFT d;
  600. doit( DEFRAG_MFT, WorkQueueItem );
  601. doit( DEFRAG_MFT, Vcb );
  602. doit( DEFRAG_MFT, DeallocateWorkItem );
  603. }
  604. printf("\n");
  605. {
  606. NUKEM d;
  607. doit( NUKEM, Next );
  608. doit( NUKEM, RecordNumbers );
  609. }
  610. printf("\n");
  611. {
  612. NAME_PAIR d;
  613. doit( NAME_PAIR, Short );
  614. doit( NAME_PAIR, Long );
  615. doit( NAME_PAIR, ShortBuffer );
  616. doit( NAME_PAIR, LongBuffer );
  617. }
  618. printf("\n");
  619. {
  620. OPLOCK_CLEANUP d;
  621. doit( OPLOCK_CLEANUP, OriginalFileName );
  622. doit( OPLOCK_CLEANUP, FullFileName );
  623. doit( OPLOCK_CLEANUP, ExactCaseName );
  624. doit( OPLOCK_CLEANUP, FileObject );
  625. }
  626. }