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, FileLock ); 131 } 132 printf("\n"); 133 { 134 FCB_INDEX d; 135 doit( FCB_INDEX, FileObject ); 136 doit( FCB_INDEX, StreamOffset ); 137 doit( FCB_INDEX, FcbQueue ); 138 doit( FCB_INDEX, Ordinal ); 139 doit( FCB_INDEX, ChildPathTableOffset ); 140 doit( FCB_INDEX, ChildOrdinal ); 141 doit( FCB_INDEX, ExactCaseRoot ); 142 doit( FCB_INDEX, IgnoreCaseRoot ); 143 } 144 printf("\n"); 145 { 146 FCB_NONPAGED d; 147 doit( FCB_NONPAGED, NodeTypeCode ); 148 doit( FCB_NONPAGED, NodeByteSize ); 149 doit( FCB_NONPAGED, SegmentObject ); 150 doit( FCB_NONPAGED, FcbResource ); 151 doit( FCB_NONPAGED, FcbMutex ); 152 } 153 printf("\n"); 154 { 155 FCB d; 156 doit( FCB, Header ); 157 doit( FCB, Vcb ); 158 doit( FCB, ParentFcb ); 159 doit( FCB, FcbLinks ); 160 doit( FCB, FileId ); 161 doit( FCB, FcbCleanup ); 162 doit( FCB, FcbReference ); 163 doit( FCB, FcbUserReference ); 164 doit( FCB, FcbState ); 165 doit( FCB, FileAttributes ); 166 doit( FCB, XAAttributes ); 167 doit( FCB, XAFileNumber ); 168 doit( FCB, FcbLockThread ); 169 doit( FCB, FcbLockCount ); 170 doit( FCB, FcbNonpaged ); 171 doit( FCB, ShareAccess ); 172 doit( FCB, McbEntry ); 173 doit( FCB, Mcb ); 174 doit( FCB, ShortNamePrefix ); 175 doit( FCB, FileNamePrefix ); 176 doit( FCB, CreationTime ); 177 doit( FCB, FcbType ); 178 } 179 printf("\n"); 180 { 181 CCB d; 182 doit( CCB, NodeTypeCode ); 183 doit( CCB, NodeByteSize ); 184 doit( CCB, Flags ); 185 doit( CCB, Fcb ); 186 doit( CCB, CurrentDirentOffset ); 187 doit( CCB, SearchExpression ); 188 } 189 printf("\n"); 190 { 191 IRP_CONTEXT d; 192 doit( IRP_CONTEXT, NodeTypeCode ); 193 doit( IRP_CONTEXT, NodeByteSize ); 194 doit( IRP_CONTEXT, Irp ); 195 doit( IRP_CONTEXT, Vcb ); 196 doit( IRP_CONTEXT, ExceptionStatus ); 197 doit( IRP_CONTEXT, Flags ); 198 doit( IRP_CONTEXT, RealDevice ); 199 doit( IRP_CONTEXT, IoContext ); 200 doit( IRP_CONTEXT, TeardownFcb ); 201 doit( IRP_CONTEXT, TopLevel ); 202 doit( IRP_CONTEXT, MajorFunction ); 203 doit( IRP_CONTEXT, MinorFunction ); 204 doit( IRP_CONTEXT, ThreadContext ); 205 doit( IRP_CONTEXT, WorkQueueItem ); 206 } 207 printf("\n"); 208 { 209 IRP_CONTEXT_LITE d; 210 doit( IRP_CONTEXT_LITE, NodeTypeCode ); 211 doit( IRP_CONTEXT_LITE, NodeByteSize ); 212 doit( IRP_CONTEXT_LITE, Fcb ); 213 doit( IRP_CONTEXT_LITE, DelayedCloseLinks ); 214 doit( IRP_CONTEXT_LITE, UserReference ); 215 doit( IRP_CONTEXT_LITE, RealDevice ); 216 } 217 printf("\n"); 218 { 219 CD_IO_CONTEXT d; 220 doit( CD_IO_CONTEXT, IrpCount ); 221 doit( CD_IO_CONTEXT, MasterIrp ); 222 doit( CD_IO_CONTEXT, Status ); 223 doit( CD_IO_CONTEXT, AllocatedContext ); 224 doit( CD_IO_CONTEXT, Resource ); 225 doit( CD_IO_CONTEXT, ResourceThreadId ); 226 doit( CD_IO_CONTEXT, SyncEvent ); 227 } 228 printf("\n"); 229 { 230 THREAD_CONTEXT d; 231 doit( THREAD_CONTEXT, Cdfs ); 232 doit( THREAD_CONTEXT, SavedTopLevelIrp ); 233 doit( THREAD_CONTEXT, TopLevelIrpContext ); 234 } 235 printf("\n"); 236 { 237 PATH_ENUM_CONTEXT d; 238 doit( PATH_ENUM_CONTEXT, Data ); 239 doit( PATH_ENUM_CONTEXT, BaseOffset ); 240 doit( PATH_ENUM_CONTEXT, DataLength ); 241 doit( PATH_ENUM_CONTEXT, Bcb ); 242 doit( PATH_ENUM_CONTEXT, DataOffset ); 243 doit( PATH_ENUM_CONTEXT, AllocatedData ); 244 doit( PATH_ENUM_CONTEXT, LastDataBlock ); 245 } 246 printf("\n"); 247 { 248 PATH_ENTRY d; 249 doit( PATH_ENTRY, Ordinal ); 250 doit( PATH_ENTRY, PathTableOffset ); 251 doit( PATH_ENTRY, DiskOffset ); 252 doit( PATH_ENTRY, PathEntryLength ); 253 doit( PATH_ENTRY, ParentOrdinal ); 254 doit( PATH_ENTRY, DirNameLen ); 255 doit( PATH_ENTRY, DirName ); 256 doit( PATH_ENTRY, Flags ); 257 doit( PATH_ENTRY, CdDirName ); 258 doit( PATH_ENTRY, CdCaseDirName ); 259 doit( PATH_ENTRY, NameBuffer ); 260 } 261 printf("\n"); 262 { 263 COMPOUND_PATH_ENTRY d; 264 doit( COMPOUND_PATH_ENTRY, PathContext ); 265 doit( COMPOUND_PATH_ENTRY, PathEntry ); 266 } 267 printf("\n"); 268 { 269 DIRENT_ENUM_CONTEXT d; 270 doit( DIRENT_ENUM_CONTEXT, Sector ); 271 doit( DIRENT_ENUM_CONTEXT, BaseOffset ); 272 doit( DIRENT_ENUM_CONTEXT, DataLength ); 273 doit( DIRENT_ENUM_CONTEXT, Bcb ); 274 doit( DIRENT_ENUM_CONTEXT, SectorOffset ); 275 doit( DIRENT_ENUM_CONTEXT, NextDirentOffset ); 276 } 277 printf("\n"); 278 { 279 DIRENT d; 280 doit( DIRENT, DirentOffset ); 281 doit( DIRENT, DirentLength ); 282 doit( DIRENT, StartingOffset ); 283 doit( DIRENT, DataLength ); 284 doit( DIRENT, CdTime ); 285 doit( DIRENT, DirentFlags ); 286 doit( DIRENT, Flags ); 287 doit( DIRENT, FileUnitSize ); 288 doit( DIRENT, InterleaveGapSize ); 289 doit( DIRENT, SystemUseOffset ); 290 doit( DIRENT, XAAttributes ); 291 doit( DIRENT, XAFileNumber ); 292 doit( DIRENT, FileNameLen ); 293 doit( DIRENT, FileName ); 294 doit( DIRENT, CdFileName ); 295 doit( DIRENT, CdCaseFileName ); 296 doit( DIRENT, ExtentType ); 297 doit( DIRENT, NameBuffer ); 298 } 299 printf("\n"); 300 { 301 COMPOUND_DIRENT d; 302 doit( COMPOUND_DIRENT, DirContext ); 303 doit( COMPOUND_DIRENT, Dirent ); 304 } 305 printf("\n"); 306 { 307 FILE_ENUM_CONTEXT d; 308 doit( FILE_ENUM_CONTEXT, PriorDirent ); 309 doit( FILE_ENUM_CONTEXT, InitialDirent ); 310 doit( FILE_ENUM_CONTEXT, CurrentDirent ); 311 doit( FILE_ENUM_CONTEXT, Flags ); 312 doit( FILE_ENUM_CONTEXT, FileSize ); 313 doit( FILE_ENUM_CONTEXT, ShortName ); 314 doit( FILE_ENUM_CONTEXT, ShortNameBuffer ); 315 doit( FILE_ENUM_CONTEXT, Dirents ); 316 } 317 printf("\n"); 318 { 319 RIFF_HEADER d; 320 doit( RIFF_HEADER, ChunkId ); 321 doit( RIFF_HEADER, ChunkSize ); 322 doit( RIFF_HEADER, SignatureCDXA ); 323 doit( RIFF_HEADER, SignatureFMT ); 324 doit( RIFF_HEADER, XAChunkSize ); 325 doit( RIFF_HEADER, OwnerId ); 326 doit( RIFF_HEADER, Attributes ); 327 doit( RIFF_HEADER, SignatureXA ); 328 doit( RIFF_HEADER, FileNumber ); 329 doit( RIFF_HEADER, Reserved ); 330 doit( RIFF_HEADER, SignatureData ); 331 doit( RIFF_HEADER, RawSectors ); 332 } 333 printf("\n"); 334 { 335 AUDIO_PLAY_HEADER d; 336 doit( AUDIO_PLAY_HEADER, Chunk ); 337 doit( AUDIO_PLAY_HEADER, ChunkSize ); 338 doit( AUDIO_PLAY_HEADER, SignatureCDDA ); 339 doit( AUDIO_PLAY_HEADER, SignatureFMT ); 340 doit( AUDIO_PLAY_HEADER, FMTChunkSize ); 341 doit( AUDIO_PLAY_HEADER, FormatTag ); 342 doit( AUDIO_PLAY_HEADER, TrackNumber ); 343 doit( AUDIO_PLAY_HEADER, DiskID ); 344 doit( AUDIO_PLAY_HEADER, StartingSector ); 345 doit( AUDIO_PLAY_HEADER, SectorCount ); 346 doit( AUDIO_PLAY_HEADER, TrackAddress ); 347 doit( AUDIO_PLAY_HEADER, TrackLength ); 348 } 349 printf("\n"); 350 { 351 RAW_ISO_VD d; 352 doit( RAW_ISO_VD, DescType ); 353 doit( RAW_ISO_VD, StandardId ); 354 doit( RAW_ISO_VD, Version ); 355 doit( RAW_ISO_VD, VolumeFlags ); 356 doit( RAW_ISO_VD, SystemId ); 357 doit( RAW_ISO_VD, VolumeId ); 358 doit( RAW_ISO_VD, Reserved ); 359 doit( RAW_ISO_VD, VolSpaceI ); 360 doit( RAW_ISO_VD, VolSpaceM ); 361 doit( RAW_ISO_VD, CharSet ); 362 doit( RAW_ISO_VD, VolSetSizeI ); 363 doit( RAW_ISO_VD, VolSetSizeM ); 364 doit( RAW_ISO_VD, VolSeqNumI ); 365 doit( RAW_ISO_VD, VolSeqNumM ); 366 doit( RAW_ISO_VD, LogicalBlkSzI ); 367 doit( RAW_ISO_VD, LogicalBlkSzM ); 368 doit( RAW_ISO_VD, PathTableSzI ); 369 doit( RAW_ISO_VD, PathTableSzM ); 370 doit( RAW_ISO_VD, PathTabLocI ); 371 doit( RAW_ISO_VD, PathTabLocM ); 372 doit( RAW_ISO_VD, RootDe ); 373 doit( RAW_ISO_VD, VolSetId ); 374 doit( RAW_ISO_VD, PublId ); 375 doit( RAW_ISO_VD, PreparerId ); 376 doit( RAW_ISO_VD, AppId ); 377 doit( RAW_ISO_VD, Copyright ); 378 doit( RAW_ISO_VD, Abstract ); 379 doit( RAW_ISO_VD, Bibliograph ); 380 doit( RAW_ISO_VD, CreateDate ); 381 doit( RAW_ISO_VD, ModDate ); 382 doit( RAW_ISO_VD, ExpireDate ); 383 doit( RAW_ISO_VD, EffectDate ); 384 doit( RAW_ISO_VD, FileStructVer ); 385 doit( RAW_ISO_VD, Reserved3 ); 386 doit( RAW_ISO_VD, ResApp ); 387 doit( RAW_ISO_VD, Reserved4 ); 388 } 389 printf("\n"); 390 { 391 RAW_HSG_VD d; 392 doit( RAW_HSG_VD, BlkNumI ); 393 doit( RAW_HSG_VD, BlkNumM ); 394 doit( RAW_HSG_VD, DescType ); 395 doit( RAW_HSG_VD, StandardId ); 396 doit( RAW_HSG_VD, Version ); 397 doit( RAW_HSG_VD, VolumeFlags ); 398 doit( RAW_HSG_VD, SystemId ); 399 doit( RAW_HSG_VD, VolumeId ); 400 doit( RAW_HSG_VD, Reserved ); 401 doit( RAW_HSG_VD, VolSpaceI ); 402 doit( RAW_HSG_VD, VolSpaceM ); 403 doit( RAW_HSG_VD, CharSet ); 404 doit( RAW_HSG_VD, VolSetSizeI ); 405 doit( RAW_HSG_VD, VolSetSizeM ); 406 doit( RAW_HSG_VD, VolSeqNumI ); 407 doit( RAW_HSG_VD, VolSeqNumM ); 408 doit( RAW_HSG_VD, LogicalBlkSzI ); 409 doit( RAW_HSG_VD, LogicalBlkSzM ); 410 doit( RAW_HSG_VD, PathTableSzI ); 411 doit( RAW_HSG_VD, PathTableSzM ); 412 doit( RAW_HSG_VD, PathTabLocI ); 413 doit( RAW_HSG_VD, PathTabLocM ); 414 doit( RAW_HSG_VD, RootDe ); 415 doit( RAW_HSG_VD, VolSetId ); 416 doit( RAW_HSG_VD, PublId ); 417 doit( RAW_HSG_VD, PreparerId ); 418 doit( RAW_HSG_VD, AppId ); 419 doit( RAW_HSG_VD, Copyright ); 420 doit( RAW_HSG_VD, Abstract ); 421 doit( RAW_HSG_VD, CreateDate ); 422 doit( RAW_HSG_VD, ModDate ); 423 doit( RAW_HSG_VD, ExpireDate ); 424 doit( RAW_HSG_VD, EffectDate ); 425 doit( RAW_HSG_VD, FileStructVer ); 426 doit( RAW_HSG_VD, Reserved3 ); 427 doit( RAW_HSG_VD, ResApp ); 428 doit( RAW_HSG_VD, Reserved4 ); 429 } 430 printf("\n"); 431 { 432 RAW_DIRENT d; 433 doit( RAW_DIRENT, DirLen ); 434 doit( RAW_DIRENT, XarLen ); 435 doit( RAW_DIRENT, FileLoc ); 436 doit( RAW_DIRENT, FileLocMot ); 437 doit( RAW_DIRENT, DataLen ); 438 doit( RAW_DIRENT, DataLenMot ); 439 doit( RAW_DIRENT, RecordTime ); 440 doit( RAW_DIRENT, FlagsHSG ); 441 doit( RAW_DIRENT, FlagsISO ); 442 doit( RAW_DIRENT, IntLeaveSize ); 443 doit( RAW_DIRENT, IntLeaveSkip ); 444 doit( RAW_DIRENT, Vssn ); 445 doit( RAW_DIRENT, VssnMot ); 446 doit( RAW_DIRENT, FileIdLen ); 447 doit( RAW_DIRENT, FileId ); 448 } 449 printf("\n"); 450 { 451 RAW_PATH_ISO d; 452 doit( RAW_PATH_ISO, DirIdLen ); 453 doit( RAW_PATH_ISO, XarLen ); 454 doit( RAW_PATH_ISO, DirLoc ); 455 doit( RAW_PATH_ISO, ParentNum ); 456 doit( RAW_PATH_ISO, DirId ); 457 } 458 printf("\n"); 459 { 460 RAW_PATH_HSG d; 461 doit( RAW_PATH_HSG, DirLoc ); 462 doit( RAW_PATH_HSG, XarLen ); 463 doit( RAW_PATH_HSG, DirIdLen ); 464 doit( RAW_PATH_HSG, ParentNum ); 465 doit( RAW_PATH_HSG, DirId ); 466 } 467 printf("\n"); 468 { 469 SYSTEM_USE_XA d; 470 doit( SYSTEM_USE_XA, OwnerId ); 471 doit( SYSTEM_USE_XA, Attributes ); 472 doit( SYSTEM_USE_XA, Signature ); 473 doit( SYSTEM_USE_XA, FileNumber ); 474 doit( SYSTEM_USE_XA, Reserved ); 475 } 476 } 477