[CDFS_NEW] Add a CMakeFile and a registry file. When using both, you get a driver...
[reactos.git] / drivers / filesystems / cdfs_new / fieldoff.c
1 #include "cdprocs.h"
2 #include <stdio.h>
3
4 #define doit(a,b) { printf("%s %04lx %4lx %s\n", #a, FIELD_OFFSET(a,b), sizeof(d.b), #b); }
5
6 VOID
7 __cdecl
8 main (argc, argv)
9 int argc;
10 char *argv[];
11 {
12 printf("<Record> <offset> <size> <field>\n\n");
13 {
14 CD_MCB d;
15 doit( CD_MCB, MaximumEntryCount );
16 doit( CD_MCB, CurrentEntryCount );
17 doit( CD_MCB, McbArray );
18 }
19 printf("\n");
20 {
21 CD_MCB_ENTRY d;
22 doit( CD_MCB_ENTRY, DiskOffset );
23 doit( CD_MCB_ENTRY, ByteCount );
24 doit( CD_MCB_ENTRY, FileOffset );
25 doit( CD_MCB_ENTRY, DataBlockByteCount );
26 doit( CD_MCB_ENTRY, TotalBlockByteCount );
27 }
28 printf("\n");
29 {
30 CD_NAME d;
31 doit( CD_NAME, FileName );
32 doit( CD_NAME, VersionString );
33 }
34 printf("\n");
35 {
36 NAME_LINK d;
37 doit( NAME_LINK, Links );
38 doit( NAME_LINK, FileName );
39 }
40 printf("\n");
41 {
42 PREFIX_ENTRY d;
43 doit( PREFIX_ENTRY, Fcb );
44 doit( PREFIX_ENTRY, PrefixFlags );
45 doit( PREFIX_ENTRY, ExactCaseName );
46 doit( PREFIX_ENTRY, IgnoreCaseName );
47 doit( PREFIX_ENTRY, FileNameBuffer );
48 }
49 printf("\n");
50 {
51 CD_DATA d;
52 doit( CD_DATA, NodeTypeCode );
53 doit( CD_DATA, NodeByteSize );
54 doit( CD_DATA, DriverObject );
55 doit( CD_DATA, VcbQueue );
56 doit( CD_DATA, IrpContextDepth );
57 doit( CD_DATA, IrpContextMaxDepth );
58 doit( CD_DATA, IrpContextList );
59 doit( CD_DATA, FileSystemDeviceObject );
60 doit( CD_DATA, AsyncCloseQueue );
61 doit( CD_DATA, AsyncCloseCount );
62 doit( CD_DATA, FspCloseActive );
63 doit( CD_DATA, ReduceDelayedClose );
64 doit( CD_DATA, PadUshort );
65 doit( CD_DATA, DelayedCloseQueue );
66 doit( CD_DATA, DelayedCloseCount );
67 doit( CD_DATA, MinDelayedCloseCount );
68 doit( CD_DATA, MaxDelayedCloseCount );
69 doit( CD_DATA, CdDataLockThread );
70 doit( CD_DATA, CdDataMutex );
71 doit( CD_DATA, DataResource );
72 doit( CD_DATA, CacheManagerCallbacks );
73 doit( CD_DATA, CacheManagerVolumeCallbacks );
74 doit( CD_DATA, CloseItem );
75 }
76 printf("\n");
77 {
78 VCB d;
79 doit( VCB, NodeTypeCode );
80 doit( VCB, NodeByteSize );
81 doit( VCB, Vpb );
82 doit( VCB, TargetDeviceObject );
83 doit( VCB, VolumeLockFileObject );
84 doit( VCB, VcbLinks );
85 doit( VCB, VcbState );
86 doit( VCB, VcbCondition );
87 doit( VCB, VcbCleanup );
88 doit( VCB, VcbReference );
89 doit( VCB, VcbUserReference );
90 doit( VCB, VolumeDasdFcb );
91 doit( VCB, RootIndexFcb );
92 doit( VCB, PathTableFcb );
93 doit( VCB, BaseSector );
94 doit( VCB, VdSectorOffset );
95 doit( VCB, PrimaryVdSectorOffset );
96 doit( VCB, XASector );
97 doit( VCB, XADiskOffset );
98 doit( VCB, VcbResource );
99 doit( VCB, FileResource );
100 doit( VCB, VcbMutex );
101 doit( VCB, VcbLockThread );
102 doit( VCB, NotifySync );
103 doit( VCB, DirNotifyList );
104 doit( VCB, BlockSize );
105 doit( VCB, BlockToSectorShift );
106 doit( VCB, BlockToByteShift );
107 doit( VCB, BlocksPerSector );
108 doit( VCB, BlockMask );
109 doit( VCB, BlockInverseMask );
110 doit( VCB, FcbTable );
111 doit( VCB, CdromToc );
112 doit( VCB, TocLength );
113 doit( VCB, TrackCount );
114 doit( VCB, DiskFlags );
115 doit( VCB, BlockFactor );
116 }
117 printf("\n");
118 {
119 VOLUME_DEVICE_OBJECT d;
120 doit( VOLUME_DEVICE_OBJECT, DeviceObject );
121 doit( VOLUME_DEVICE_OBJECT, PostedRequestCount );
122 doit( VOLUME_DEVICE_OBJECT, OverflowQueueCount );
123 doit( VOLUME_DEVICE_OBJECT, OverflowQueue );
124 doit( VOLUME_DEVICE_OBJECT, OverflowQueueSpinLock );
125 doit( VOLUME_DEVICE_OBJECT, Vcb );
126 }
127 printf("\n");
128 {
129 FCB_DATA d;
130 doit( FCB_DATA, Oplock );
131 doit( FCB_DATA, FileLock );
132 }
133 printf("\n");
134 {
135 FCB_INDEX d;
136 doit( FCB_INDEX, FileObject );
137 doit( FCB_INDEX, StreamOffset );
138 doit( FCB_INDEX, FcbQueue );
139 doit( FCB_INDEX, Ordinal );
140 doit( FCB_INDEX, ChildPathTableOffset );
141 doit( FCB_INDEX, ChildOrdinal );
142 doit( FCB_INDEX, ExactCaseRoot );
143 doit( FCB_INDEX, IgnoreCaseRoot );
144 }
145 printf("\n");
146 {
147 FCB_NONPAGED d;
148 doit( FCB_NONPAGED, NodeTypeCode );
149 doit( FCB_NONPAGED, NodeByteSize );
150 doit( FCB_NONPAGED, SegmentObject );
151 doit( FCB_NONPAGED, FcbResource );
152 doit( FCB_NONPAGED, FcbMutex );
153 }
154 printf("\n");
155 {
156 FCB d;
157 doit( FCB, Header );
158 doit( FCB, Vcb );
159 doit( FCB, ParentFcb );
160 doit( FCB, FcbLinks );
161 doit( FCB, FileId );
162 doit( FCB, FcbCleanup );
163 doit( FCB, FcbReference );
164 doit( FCB, FcbUserReference );
165 doit( FCB, FcbState );
166 doit( FCB, FileAttributes );
167 doit( FCB, XAAttributes );
168 doit( FCB, XAFileNumber );
169 doit( FCB, FcbLockThread );
170 doit( FCB, FcbLockCount );
171 doit( FCB, FcbNonpaged );
172 doit( FCB, ShareAccess );
173 doit( FCB, McbEntry );
174 doit( FCB, Mcb );
175 doit( FCB, ShortNamePrefix );
176 doit( FCB, FileNamePrefix );
177 doit( FCB, CreationTime );
178 doit( FCB, FcbType );
179 }
180 printf("\n");
181 {
182 CCB d;
183 doit( CCB, NodeTypeCode );
184 doit( CCB, NodeByteSize );
185 doit( CCB, Flags );
186 doit( CCB, Fcb );
187 doit( CCB, CurrentDirentOffset );
188 doit( CCB, SearchExpression );
189 }
190 printf("\n");
191 {
192 IRP_CONTEXT d;
193 doit( IRP_CONTEXT, NodeTypeCode );
194 doit( IRP_CONTEXT, NodeByteSize );
195 doit( IRP_CONTEXT, Irp );
196 doit( IRP_CONTEXT, Vcb );
197 doit( IRP_CONTEXT, ExceptionStatus );
198 doit( IRP_CONTEXT, Flags );
199 doit( IRP_CONTEXT, RealDevice );
200 doit( IRP_CONTEXT, IoContext );
201 doit( IRP_CONTEXT, TeardownFcb );
202 doit( IRP_CONTEXT, TopLevel );
203 doit( IRP_CONTEXT, MajorFunction );
204 doit( IRP_CONTEXT, MinorFunction );
205 doit( IRP_CONTEXT, ThreadContext );
206 doit( IRP_CONTEXT, WorkQueueItem );
207 }
208 printf("\n");
209 {
210 IRP_CONTEXT_LITE d;
211 doit( IRP_CONTEXT_LITE, NodeTypeCode );
212 doit( IRP_CONTEXT_LITE, NodeByteSize );
213 doit( IRP_CONTEXT_LITE, Fcb );
214 doit( IRP_CONTEXT_LITE, DelayedCloseLinks );
215 doit( IRP_CONTEXT_LITE, UserReference );
216 doit( IRP_CONTEXT_LITE, RealDevice );
217 }
218 printf("\n");
219 {
220 CD_IO_CONTEXT d;
221 doit( CD_IO_CONTEXT, IrpCount );
222 doit( CD_IO_CONTEXT, MasterIrp );
223 doit( CD_IO_CONTEXT, Status );
224 doit( CD_IO_CONTEXT, AllocatedContext );
225 doit( CD_IO_CONTEXT, Resource );
226 doit( CD_IO_CONTEXT, ResourceThreadId );
227 doit( CD_IO_CONTEXT, SyncEvent );
228 }
229 printf("\n");
230 {
231 THREAD_CONTEXT d;
232 doit( THREAD_CONTEXT, Cdfs );
233 doit( THREAD_CONTEXT, SavedTopLevelIrp );
234 doit( THREAD_CONTEXT, TopLevelIrpContext );
235 }
236 printf("\n");
237 {
238 PATH_ENUM_CONTEXT d;
239 doit( PATH_ENUM_CONTEXT, Data );
240 doit( PATH_ENUM_CONTEXT, BaseOffset );
241 doit( PATH_ENUM_CONTEXT, DataLength );
242 doit( PATH_ENUM_CONTEXT, Bcb );
243 doit( PATH_ENUM_CONTEXT, DataOffset );
244 doit( PATH_ENUM_CONTEXT, AllocatedData );
245 doit( PATH_ENUM_CONTEXT, LastDataBlock );
246 }
247 printf("\n");
248 {
249 PATH_ENTRY d;
250 doit( PATH_ENTRY, Ordinal );
251 doit( PATH_ENTRY, PathTableOffset );
252 doit( PATH_ENTRY, DiskOffset );
253 doit( PATH_ENTRY, PathEntryLength );
254 doit( PATH_ENTRY, ParentOrdinal );
255 doit( PATH_ENTRY, DirNameLen );
256 doit( PATH_ENTRY, DirName );
257 doit( PATH_ENTRY, Flags );
258 doit( PATH_ENTRY, CdDirName );
259 doit( PATH_ENTRY, CdCaseDirName );
260 doit( PATH_ENTRY, NameBuffer );
261 }
262 printf("\n");
263 {
264 COMPOUND_PATH_ENTRY d;
265 doit( COMPOUND_PATH_ENTRY, PathContext );
266 doit( COMPOUND_PATH_ENTRY, PathEntry );
267 }
268 printf("\n");
269 {
270 DIRENT_ENUM_CONTEXT d;
271 doit( DIRENT_ENUM_CONTEXT, Sector );
272 doit( DIRENT_ENUM_CONTEXT, BaseOffset );
273 doit( DIRENT_ENUM_CONTEXT, DataLength );
274 doit( DIRENT_ENUM_CONTEXT, Bcb );
275 doit( DIRENT_ENUM_CONTEXT, SectorOffset );
276 doit( DIRENT_ENUM_CONTEXT, NextDirentOffset );
277 }
278 printf("\n");
279 {
280 DIRENT d;
281 doit( DIRENT, DirentOffset );
282 doit( DIRENT, DirentLength );
283 doit( DIRENT, StartingOffset );
284 doit( DIRENT, DataLength );
285 doit( DIRENT, CdTime );
286 doit( DIRENT, DirentFlags );
287 doit( DIRENT, Flags );
288 doit( DIRENT, FileUnitSize );
289 doit( DIRENT, InterleaveGapSize );
290 doit( DIRENT, SystemUseOffset );
291 doit( DIRENT, XAAttributes );
292 doit( DIRENT, XAFileNumber );
293 doit( DIRENT, FileNameLen );
294 doit( DIRENT, FileName );
295 doit( DIRENT, CdFileName );
296 doit( DIRENT, CdCaseFileName );
297 doit( DIRENT, ExtentType );
298 doit( DIRENT, NameBuffer );
299 }
300 printf("\n");
301 {
302 COMPOUND_DIRENT d;
303 doit( COMPOUND_DIRENT, DirContext );
304 doit( COMPOUND_DIRENT, Dirent );
305 }
306 printf("\n");
307 {
308 FILE_ENUM_CONTEXT d;
309 doit( FILE_ENUM_CONTEXT, PriorDirent );
310 doit( FILE_ENUM_CONTEXT, InitialDirent );
311 doit( FILE_ENUM_CONTEXT, CurrentDirent );
312 doit( FILE_ENUM_CONTEXT, Flags );
313 doit( FILE_ENUM_CONTEXT, FileSize );
314 doit( FILE_ENUM_CONTEXT, ShortName );
315 doit( FILE_ENUM_CONTEXT, ShortNameBuffer );
316 doit( FILE_ENUM_CONTEXT, Dirents );
317 }
318 printf("\n");
319 {
320 RIFF_HEADER d;
321 doit( RIFF_HEADER, ChunkId );
322 doit( RIFF_HEADER, ChunkSize );
323 doit( RIFF_HEADER, SignatureCDXA );
324 doit( RIFF_HEADER, SignatureFMT );
325 doit( RIFF_HEADER, XAChunkSize );
326 doit( RIFF_HEADER, OwnerId );
327 doit( RIFF_HEADER, Attributes );
328 doit( RIFF_HEADER, SignatureXA );
329 doit( RIFF_HEADER, FileNumber );
330 doit( RIFF_HEADER, Reserved );
331 doit( RIFF_HEADER, SignatureData );
332 doit( RIFF_HEADER, RawSectors );
333 }
334 printf("\n");
335 {
336 AUDIO_PLAY_HEADER d;
337 doit( AUDIO_PLAY_HEADER, Chunk );
338 doit( AUDIO_PLAY_HEADER, ChunkSize );
339 doit( AUDIO_PLAY_HEADER, SignatureCDDA );
340 doit( AUDIO_PLAY_HEADER, SignatureFMT );
341 doit( AUDIO_PLAY_HEADER, FMTChunkSize );
342 doit( AUDIO_PLAY_HEADER, FormatTag );
343 doit( AUDIO_PLAY_HEADER, TrackNumber );
344 doit( AUDIO_PLAY_HEADER, DiskID );
345 doit( AUDIO_PLAY_HEADER, StartingSector );
346 doit( AUDIO_PLAY_HEADER, SectorCount );
347 doit( AUDIO_PLAY_HEADER, TrackAddress );
348 doit( AUDIO_PLAY_HEADER, TrackLength );
349 }
350 printf("\n");
351 {
352 RAW_ISO_VD d;
353 doit( RAW_ISO_VD, DescType );
354 doit( RAW_ISO_VD, StandardId );
355 doit( RAW_ISO_VD, Version );
356 doit( RAW_ISO_VD, VolumeFlags );
357 doit( RAW_ISO_VD, SystemId );
358 doit( RAW_ISO_VD, VolumeId );
359 doit( RAW_ISO_VD, Reserved );
360 doit( RAW_ISO_VD, VolSpaceI );
361 doit( RAW_ISO_VD, VolSpaceM );
362 doit( RAW_ISO_VD, CharSet );
363 doit( RAW_ISO_VD, VolSetSizeI );
364 doit( RAW_ISO_VD, VolSetSizeM );
365 doit( RAW_ISO_VD, VolSeqNumI );
366 doit( RAW_ISO_VD, VolSeqNumM );
367 doit( RAW_ISO_VD, LogicalBlkSzI );
368 doit( RAW_ISO_VD, LogicalBlkSzM );
369 doit( RAW_ISO_VD, PathTableSzI );
370 doit( RAW_ISO_VD, PathTableSzM );
371 doit( RAW_ISO_VD, PathTabLocI );
372 doit( RAW_ISO_VD, PathTabLocM );
373 doit( RAW_ISO_VD, RootDe );
374 doit( RAW_ISO_VD, VolSetId );
375 doit( RAW_ISO_VD, PublId );
376 doit( RAW_ISO_VD, PreparerId );
377 doit( RAW_ISO_VD, AppId );
378 doit( RAW_ISO_VD, Copyright );
379 doit( RAW_ISO_VD, Abstract );
380 doit( RAW_ISO_VD, Bibliograph );
381 doit( RAW_ISO_VD, CreateDate );
382 doit( RAW_ISO_VD, ModDate );
383 doit( RAW_ISO_VD, ExpireDate );
384 doit( RAW_ISO_VD, EffectDate );
385 doit( RAW_ISO_VD, FileStructVer );
386 doit( RAW_ISO_VD, Reserved3 );
387 doit( RAW_ISO_VD, ResApp );
388 doit( RAW_ISO_VD, Reserved4 );
389 }
390 printf("\n");
391 {
392 RAW_HSG_VD d;
393 doit( RAW_HSG_VD, BlkNumI );
394 doit( RAW_HSG_VD, BlkNumM );
395 doit( RAW_HSG_VD, DescType );
396 doit( RAW_HSG_VD, StandardId );
397 doit( RAW_HSG_VD, Version );
398 doit( RAW_HSG_VD, VolumeFlags );
399 doit( RAW_HSG_VD, SystemId );
400 doit( RAW_HSG_VD, VolumeId );
401 doit( RAW_HSG_VD, Reserved );
402 doit( RAW_HSG_VD, VolSpaceI );
403 doit( RAW_HSG_VD, VolSpaceM );
404 doit( RAW_HSG_VD, CharSet );
405 doit( RAW_HSG_VD, VolSetSizeI );
406 doit( RAW_HSG_VD, VolSetSizeM );
407 doit( RAW_HSG_VD, VolSeqNumI );
408 doit( RAW_HSG_VD, VolSeqNumM );
409 doit( RAW_HSG_VD, LogicalBlkSzI );
410 doit( RAW_HSG_VD, LogicalBlkSzM );
411 doit( RAW_HSG_VD, PathTableSzI );
412 doit( RAW_HSG_VD, PathTableSzM );
413 doit( RAW_HSG_VD, PathTabLocI );
414 doit( RAW_HSG_VD, PathTabLocM );
415 doit( RAW_HSG_VD, RootDe );
416 doit( RAW_HSG_VD, VolSetId );
417 doit( RAW_HSG_VD, PublId );
418 doit( RAW_HSG_VD, PreparerId );
419 doit( RAW_HSG_VD, AppId );
420 doit( RAW_HSG_VD, Copyright );
421 doit( RAW_HSG_VD, Abstract );
422 doit( RAW_HSG_VD, CreateDate );
423 doit( RAW_HSG_VD, ModDate );
424 doit( RAW_HSG_VD, ExpireDate );
425 doit( RAW_HSG_VD, EffectDate );
426 doit( RAW_HSG_VD, FileStructVer );
427 doit( RAW_HSG_VD, Reserved3 );
428 doit( RAW_HSG_VD, ResApp );
429 doit( RAW_HSG_VD, Reserved4 );
430 }
431 printf("\n");
432 {
433 RAW_DIRENT d;
434 doit( RAW_DIRENT, DirLen );
435 doit( RAW_DIRENT, XarLen );
436 doit( RAW_DIRENT, FileLoc );
437 doit( RAW_DIRENT, FileLocMot );
438 doit( RAW_DIRENT, DataLen );
439 doit( RAW_DIRENT, DataLenMot );
440 doit( RAW_DIRENT, RecordTime );
441 doit( RAW_DIRENT, FlagsHSG );
442 doit( RAW_DIRENT, FlagsISO );
443 doit( RAW_DIRENT, IntLeaveSize );
444 doit( RAW_DIRENT, IntLeaveSkip );
445 doit( RAW_DIRENT, Vssn );
446 doit( RAW_DIRENT, VssnMot );
447 doit( RAW_DIRENT, FileIdLen );
448 doit( RAW_DIRENT, FileId );
449 }
450 printf("\n");
451 {
452 RAW_PATH_ISO d;
453 doit( RAW_PATH_ISO, DirIdLen );
454 doit( RAW_PATH_ISO, XarLen );
455 doit( RAW_PATH_ISO, DirLoc );
456 doit( RAW_PATH_ISO, ParentNum );
457 doit( RAW_PATH_ISO, DirId );
458 }
459 printf("\n");
460 {
461 RAW_PATH_HSG d;
462 doit( RAW_PATH_HSG, DirLoc );
463 doit( RAW_PATH_HSG, XarLen );
464 doit( RAW_PATH_HSG, DirIdLen );
465 doit( RAW_PATH_HSG, ParentNum );
466 doit( RAW_PATH_HSG, DirId );
467 }
468 printf("\n");
469 {
470 SYSTEM_USE_XA d;
471 doit( SYSTEM_USE_XA, OwnerId );
472 doit( SYSTEM_USE_XA, Attributes );
473 doit( SYSTEM_USE_XA, Signature );
474 doit( SYSTEM_USE_XA, FileNumber );
475 doit( SYSTEM_USE_XA, Reserved );
476 }
477 }
478