reactos/drivers/filesystems/cdfs_new/fieldoff.c

477 lines
15 KiB
C
Raw Normal View History

[0.4.7][CDFS_NEW/NTOSKRNL/NDK] Switch from our old CDFS to MS-PL CDFS_NEW The main motivation to switch to that newer driver is, that our old one simply can not read all isos. Especially complex ones made trouble and were only shown as empty in explorer. It is still possible to build and use the old driver when needed, only thing that needs to be done for that is to revert 0.4.8-dev-164-g ec6b3ecbe48ad51c366563196cc93a6ae74e8b69 Porting back the state up to 0.4.8-release-100-g8f947b5 implies: Fixing the following JIRA-IDs (or avoid introducing them): CORE-18029 "Mute noisy DPRINT 'SectionObject has ImageSection'" CORE-17405 "Fix a macro-copy-paste and shrink the binary size" CORE-15659 "Unable to build the gcc Release version in Windows using RosBE 2.1.6 (module cdfs fails)" CORE-14315 "CDFS_NEW assertion during first stage setup due to new CcPerformReadAhead" CORE-14128 "Avast! Free Antivirus 7.0 hangs the system when trying to detect a newly created virus" CORE-14067 "CDFS_NEW assertions and exceptions" CORE-14003 "Shutting down LiveCD asserts since introduction of MS PL CDFS_NEW" CORE-13184 "Restore ability to install from disk-image" by picking the following commits: 0.4.8-release-100-g 8f947b532221069d2f398e25a9c0775c34e21878 [NTOSKRNL] Mute noisy DPRINT 'SectionObject has ImageSection' CORE-18029 0.4.8-release-80-g eb1ea195888e17d026428dc6f406a1834c8702d8 [CDFS_NEW] == 0.4.15-dev-1456-g 889eab7 CORE-17405 0.4.8-release-62-g 8c07aad4a8c6469c7e4ba4c5e92e356a6548189a [CDFS_NEW/XDK] == 0.4.11-dev-39-g a2f9762 + 0.4.11-dev-40-g 6d7ec8c CORE-14067 0.4.8-release-3-g 5d976d04e876aac6990a8f997669711eca83227a [CDFS_NEW] == 0.4.12-dev-431-g bccad87f3ccf266be2179d1322e7a422aeb2f3b7 + 0.4.12-dev-432-g 3463b2db9fc08e5ebe2f5b146d3fe12248f632f3 CORE-15659 0.4.8-RC-3-g 51f9494d484bbe8232e375c2693851316d9d530f [CDFS_NEW] superseded later by the proper fix 0.4.8-release-62-g 8c07aad4a8c6469c7e4ba4c5e92e356a6548189a CORE-14067 0.4.8-dev-1069-g a5e89014dc943b2cbddb16fc4d92e13b7e5068e1 [CDFS_NEW] CORE-14315 0.4.8-dev-475-g a59d4674dec116a951392bb6d136bd11f0e143f2 [NTOSKRNL] io/iomgr/device.c (forgotten assert) CORE-14128 0.4.8-dev-221-g 9d67a24799e29e832933311a8e6ba21787e40f6a [CDFS_NEW] 0.4.8-dev-220-g 67a7e45e351b70356fee442c31cb5de14a0de37e [CDFS_NEW/DOC] 0.4.8-dev-219-g 6a3bbf24e012e4985b97ca4d79604c28fe0133d7 [CDFS_NEW] 0.4.8-dev-218-g ec26cde4a13b3889883d3e1b19f7878179c76df5 [CDFS_NEW] 0.4.8-dev-217-g bc2378a3560a384c47d2a4c83886531ad8f0af90 [CDFS_NEW] 0.4.8-dev-216-g 5429771b9936a6d8aee6ffb3860310673f467e93 [CDFS_NEW] 0.4.8-dev-215-g fd345482634d8ef4c64e5910ce4752ac0c7438cc [CDFS_NEW] Sync with MS-PL driver 0.4.8-dev-164-g ec6b3ecbe48ad51c366563196cc93a6ae74e8b69 [FILESYSTEMS] switch from CDFS to CDFS_NEW in CMakeLists.txt 0.4.8-dev-160-g 2b217e4ecf942126c4672f8d1c0a2fb55530d731 [NTOSKRNL] Mute spam CcSetReadAheadGranularity() 0.4.8-dev-159-g 64cb138a673fa02d76922963c680bfeb05f1d715 [NTOSKRNL] Mute spam CcPurgeCacheSection() 0.4.8-dev-150-g f723d230a0bc4b7b78ca125abecce137bb96bed6 [CDFS_NEW] 0.4.8-dev-133-g faee3753ea79c7e332c7a1b5eb74ca2c6614e23d [CDFS_NEW] CORE-14003 0.4.8-dev-132-g 1d777ffab5458495c04f250cf7ced379f306a7af [NTOSKRNL] iofunc.c CORE-14003 0.4.8-dev-131-g c3d5a3f2bdff97f03b802fe95dce9d0c9375e53e [NTOSKRNL] iofunc.c CORE-14003 0.4.8-dev-130-g 3b64f7f8fbbc64ada4dfdb6bdd1feff4bac10c1d [NTOSKRNL] ob/obref.c & co CORE-14003 0.4.8-dev-129-g 7eefe702949da68e49c4365d466c5373099c3b1f [NTOSKRNL] io/iomgr.c & co CORE-14003 0.4.8-dev-127-g 5f255827d3282b2dea1bc6d5ba77607550742ced [CDFS_NEW] 0.4.8-dev-126-g 1bef48796e4df655c71ddd92a00417dbe9e530ca [NTOSKRNL] just a comment, superseded later 0.4.8-dev-125-g cbf0430b56b600c29c1f615117574afcce1a9027 [CDFS_NEW] 0.4.8-dev-123-g f88fe43abd6a039f25cc08a8dfd65f9a56ef9da7 [NTOSKRNL] io/iomgr/device.c (forbidden DPRINT) 0.4.8-dev-122-g 6c733856258ebfac4b62ffb7733202dddb74a4be [CDFS_NEW] CORE-13184 0.4.8-dev-97-g 94298313c03c791d1ed472125ebf86f4258d2354 [CDFS_NEW] 0.4.8-dev-95-g e88eeb21af4b778f19b10e2d0e9f1c4361d6838d [CDFS_NEW/NTOSKRNL] CcWaitForCurrentLazyWriterActivity() stub return Success 0.4.8-dev-94-g 03d5be6437a1f2e4376ac117421133ebfdde799e [CDFS_NEW] 0.4.8-dev-93-g fa1c60db50d456fe39e315fbbe18bbee78af4105 [CDFS_NEW] 0.4.8-dev-92-g 8b2fd60829eeeb28fcafc0ef2511f7bed04ffd64 [CDFS_NEW] 0.4.8-dev-91-g e4da7ecc50b59b9f8283d84b3707fa69c595a57d [CDFS_NEW] 0.4.8-dev-90-g 7b19676e2b541983f1062ba1c563099284646010 [CDFS_NEW] 0.4.8-dev-89-g 3d4b8783fd0b9b8231a46e7b914447b86255e35b [CDFS_NEW] 0.4.8-dev-88-g 818025ecc8006c19ce6f6139b21294795f51bafd [CDFS_NEW] 0.4.8-dev-87-g 2639dd673636e4848a4fe33b9a4cd142efcc84f8 [CDFS_NEW] 0.4.8-dev-86-g 755bdb5d0b09e1df374f197c59639c0d78b86d6f [CDFS_NEW] 0.4.8-dev-85-g 3cbcb1badee213fdbadaa2db99086d21a8775fe8 [CDFS_NEW] and mute spam in opcode INSTEAD of picking: 0.4.8-dev-165-g 2284a457a36a9ce7e2b28bf38b6456ff0a6de471 [NTOSKRNL] oplock.c Fixup 0.4.8-dev-163-g d3d585395684b96df9782fe0af253f2c3e9cffc4 [NTOSKRNL] oplock.c Implement oplock-support 0.4.12-dev-232-g f488102c863c46763f36c837265a207dc59dadd5 [CDFS] was also left out for now I am aware, that the backport introduces white-space-glitches within CDFS_NEW. I decided to live with them in favor of better sync to master and newer releases.
2022-01-27 20:10:22 +00:00
#include "cdprocs.h"
#include <stdio.h>
#define doit(a,b) { printf("%s %04lx %4lx %s\n", #a, FIELD_OFFSET(a,b), sizeof(d.b), #b); }
VOID
__cdecl
main (argc, argv)
int argc;
char *argv[];
{
printf("<Record> <offset> <size> <field>\n\n");
{
CD_MCB d;
doit( CD_MCB, MaximumEntryCount );
doit( CD_MCB, CurrentEntryCount );
doit( CD_MCB, McbArray );
}
printf("\n");
{
CD_MCB_ENTRY d;
doit( CD_MCB_ENTRY, DiskOffset );
doit( CD_MCB_ENTRY, ByteCount );
doit( CD_MCB_ENTRY, FileOffset );
doit( CD_MCB_ENTRY, DataBlockByteCount );
doit( CD_MCB_ENTRY, TotalBlockByteCount );
}
printf("\n");
{
CD_NAME d;
doit( CD_NAME, FileName );
doit( CD_NAME, VersionString );
}
printf("\n");
{
NAME_LINK d;
doit( NAME_LINK, Links );
doit( NAME_LINK, FileName );
}
printf("\n");
{
PREFIX_ENTRY d;
doit( PREFIX_ENTRY, Fcb );
doit( PREFIX_ENTRY, PrefixFlags );
doit( PREFIX_ENTRY, ExactCaseName );
doit( PREFIX_ENTRY, IgnoreCaseName );
doit( PREFIX_ENTRY, FileNameBuffer );
}
printf("\n");
{
CD_DATA d;
doit( CD_DATA, NodeTypeCode );
doit( CD_DATA, NodeByteSize );
doit( CD_DATA, DriverObject );
doit( CD_DATA, VcbQueue );
doit( CD_DATA, IrpContextDepth );
doit( CD_DATA, IrpContextMaxDepth );
doit( CD_DATA, IrpContextList );
doit( CD_DATA, FileSystemDeviceObject );
doit( CD_DATA, AsyncCloseQueue );
doit( CD_DATA, AsyncCloseCount );
doit( CD_DATA, FspCloseActive );
doit( CD_DATA, ReduceDelayedClose );
doit( CD_DATA, PadUshort );
doit( CD_DATA, DelayedCloseQueue );
doit( CD_DATA, DelayedCloseCount );
doit( CD_DATA, MinDelayedCloseCount );
doit( CD_DATA, MaxDelayedCloseCount );
doit( CD_DATA, CdDataLockThread );
doit( CD_DATA, CdDataMutex );
doit( CD_DATA, DataResource );
doit( CD_DATA, CacheManagerCallbacks );
doit( CD_DATA, CacheManagerVolumeCallbacks );
doit( CD_DATA, CloseItem );
}
printf("\n");
{
VCB d;
doit( VCB, NodeTypeCode );
doit( VCB, NodeByteSize );
doit( VCB, Vpb );
doit( VCB, TargetDeviceObject );
doit( VCB, VolumeLockFileObject );
doit( VCB, VcbLinks );
doit( VCB, VcbState );
doit( VCB, VcbCondition );
doit( VCB, VcbCleanup );
doit( VCB, VcbReference );
doit( VCB, VcbUserReference );
doit( VCB, VolumeDasdFcb );
doit( VCB, RootIndexFcb );
doit( VCB, PathTableFcb );
doit( VCB, BaseSector );
doit( VCB, VdSectorOffset );
doit( VCB, PrimaryVdSectorOffset );
doit( VCB, XASector );
doit( VCB, XADiskOffset );
doit( VCB, VcbResource );
doit( VCB, FileResource );
doit( VCB, VcbMutex );
doit( VCB, VcbLockThread );
doit( VCB, NotifySync );
doit( VCB, DirNotifyList );
doit( VCB, BlockSize );
doit( VCB, BlockToSectorShift );
doit( VCB, BlockToByteShift );
doit( VCB, BlocksPerSector );
doit( VCB, BlockMask );
doit( VCB, BlockInverseMask );
doit( VCB, FcbTable );
doit( VCB, CdromToc );
doit( VCB, TocLength );
doit( VCB, TrackCount );
doit( VCB, DiskFlags );
doit( VCB, BlockFactor );
}
printf("\n");
{
VOLUME_DEVICE_OBJECT d;
doit( VOLUME_DEVICE_OBJECT, DeviceObject );
doit( VOLUME_DEVICE_OBJECT, PostedRequestCount );
doit( VOLUME_DEVICE_OBJECT, OverflowQueueCount );
doit( VOLUME_DEVICE_OBJECT, OverflowQueue );
doit( VOLUME_DEVICE_OBJECT, OverflowQueueSpinLock );
doit( VOLUME_DEVICE_OBJECT, Vcb );
}
printf("\n");
{
FCB_DATA d;
doit( FCB_DATA, FileLock );
}
printf("\n");
{
FCB_INDEX d;
doit( FCB_INDEX, FileObject );
doit( FCB_INDEX, StreamOffset );
doit( FCB_INDEX, FcbQueue );
doit( FCB_INDEX, Ordinal );
doit( FCB_INDEX, ChildPathTableOffset );
doit( FCB_INDEX, ChildOrdinal );
doit( FCB_INDEX, ExactCaseRoot );
doit( FCB_INDEX, IgnoreCaseRoot );
}
printf("\n");
{
FCB_NONPAGED d;
doit( FCB_NONPAGED, NodeTypeCode );
doit( FCB_NONPAGED, NodeByteSize );
doit( FCB_NONPAGED, SegmentObject );
doit( FCB_NONPAGED, FcbResource );
doit( FCB_NONPAGED, FcbMutex );
}
printf("\n");
{
FCB d;
doit( FCB, Header );
doit( FCB, Vcb );
doit( FCB, ParentFcb );
doit( FCB, FcbLinks );
doit( FCB, FileId );
doit( FCB, FcbCleanup );
doit( FCB, FcbReference );
doit( FCB, FcbUserReference );
doit( FCB, FcbState );
doit( FCB, FileAttributes );
doit( FCB, XAAttributes );
doit( FCB, XAFileNumber );
doit( FCB, FcbLockThread );
doit( FCB, FcbLockCount );
doit( FCB, FcbNonpaged );
doit( FCB, ShareAccess );
doit( FCB, McbEntry );
doit( FCB, Mcb );
doit( FCB, ShortNamePrefix );
doit( FCB, FileNamePrefix );
doit( FCB, CreationTime );
doit( FCB, FcbType );
}
printf("\n");
{
CCB d;
doit( CCB, NodeTypeCode );
doit( CCB, NodeByteSize );
doit( CCB, Flags );
doit( CCB, Fcb );
doit( CCB, CurrentDirentOffset );
doit( CCB, SearchExpression );
}
printf("\n");
{
IRP_CONTEXT d;
doit( IRP_CONTEXT, NodeTypeCode );
doit( IRP_CONTEXT, NodeByteSize );
doit( IRP_CONTEXT, Irp );
doit( IRP_CONTEXT, Vcb );
doit( IRP_CONTEXT, ExceptionStatus );
doit( IRP_CONTEXT, Flags );
doit( IRP_CONTEXT, RealDevice );
doit( IRP_CONTEXT, IoContext );
doit( IRP_CONTEXT, TeardownFcb );
doit( IRP_CONTEXT, TopLevel );
doit( IRP_CONTEXT, MajorFunction );
doit( IRP_CONTEXT, MinorFunction );
doit( IRP_CONTEXT, ThreadContext );
doit( IRP_CONTEXT, WorkQueueItem );
}
printf("\n");
{
IRP_CONTEXT_LITE d;
doit( IRP_CONTEXT_LITE, NodeTypeCode );
doit( IRP_CONTEXT_LITE, NodeByteSize );
doit( IRP_CONTEXT_LITE, Fcb );
doit( IRP_CONTEXT_LITE, DelayedCloseLinks );
doit( IRP_CONTEXT_LITE, UserReference );
doit( IRP_CONTEXT_LITE, RealDevice );
}
printf("\n");
{
CD_IO_CONTEXT d;
doit( CD_IO_CONTEXT, IrpCount );
doit( CD_IO_CONTEXT, MasterIrp );
doit( CD_IO_CONTEXT, Status );
doit( CD_IO_CONTEXT, AllocatedContext );
doit( CD_IO_CONTEXT, Resource );
doit( CD_IO_CONTEXT, ResourceThreadId );
doit( CD_IO_CONTEXT, SyncEvent );
}
printf("\n");
{
THREAD_CONTEXT d;
doit( THREAD_CONTEXT, Cdfs );
doit( THREAD_CONTEXT, SavedTopLevelIrp );
doit( THREAD_CONTEXT, TopLevelIrpContext );
}
printf("\n");
{
PATH_ENUM_CONTEXT d;
doit( PATH_ENUM_CONTEXT, Data );
doit( PATH_ENUM_CONTEXT, BaseOffset );
doit( PATH_ENUM_CONTEXT, DataLength );
doit( PATH_ENUM_CONTEXT, Bcb );
doit( PATH_ENUM_CONTEXT, DataOffset );
doit( PATH_ENUM_CONTEXT, AllocatedData );
doit( PATH_ENUM_CONTEXT, LastDataBlock );
}
printf("\n");
{
PATH_ENTRY d;
doit( PATH_ENTRY, Ordinal );
doit( PATH_ENTRY, PathTableOffset );
doit( PATH_ENTRY, DiskOffset );
doit( PATH_ENTRY, PathEntryLength );
doit( PATH_ENTRY, ParentOrdinal );
doit( PATH_ENTRY, DirNameLen );
doit( PATH_ENTRY, DirName );
doit( PATH_ENTRY, Flags );
doit( PATH_ENTRY, CdDirName );
doit( PATH_ENTRY, CdCaseDirName );
doit( PATH_ENTRY, NameBuffer );
}
printf("\n");
{
COMPOUND_PATH_ENTRY d;
doit( COMPOUND_PATH_ENTRY, PathContext );
doit( COMPOUND_PATH_ENTRY, PathEntry );
}
printf("\n");
{
DIRENT_ENUM_CONTEXT d;
doit( DIRENT_ENUM_CONTEXT, Sector );
doit( DIRENT_ENUM_CONTEXT, BaseOffset );
doit( DIRENT_ENUM_CONTEXT, DataLength );
doit( DIRENT_ENUM_CONTEXT, Bcb );
doit( DIRENT_ENUM_CONTEXT, SectorOffset );
doit( DIRENT_ENUM_CONTEXT, NextDirentOffset );
}
printf("\n");
{
DIRENT d;
doit( DIRENT, DirentOffset );
doit( DIRENT, DirentLength );
doit( DIRENT, StartingOffset );
doit( DIRENT, DataLength );
doit( DIRENT, CdTime );
doit( DIRENT, DirentFlags );
doit( DIRENT, Flags );
doit( DIRENT, FileUnitSize );
doit( DIRENT, InterleaveGapSize );
doit( DIRENT, SystemUseOffset );
doit( DIRENT, XAAttributes );
doit( DIRENT, XAFileNumber );
doit( DIRENT, FileNameLen );
doit( DIRENT, FileName );
doit( DIRENT, CdFileName );
doit( DIRENT, CdCaseFileName );
doit( DIRENT, ExtentType );
doit( DIRENT, NameBuffer );
}
printf("\n");
{
COMPOUND_DIRENT d;
doit( COMPOUND_DIRENT, DirContext );
doit( COMPOUND_DIRENT, Dirent );
}
printf("\n");
{
FILE_ENUM_CONTEXT d;
doit( FILE_ENUM_CONTEXT, PriorDirent );
doit( FILE_ENUM_CONTEXT, InitialDirent );
doit( FILE_ENUM_CONTEXT, CurrentDirent );
doit( FILE_ENUM_CONTEXT, Flags );
doit( FILE_ENUM_CONTEXT, FileSize );
doit( FILE_ENUM_CONTEXT, ShortName );
doit( FILE_ENUM_CONTEXT, ShortNameBuffer );
doit( FILE_ENUM_CONTEXT, Dirents );
}
printf("\n");
{
RIFF_HEADER d;
doit( RIFF_HEADER, ChunkId );
doit( RIFF_HEADER, ChunkSize );
doit( RIFF_HEADER, SignatureCDXA );
doit( RIFF_HEADER, SignatureFMT );
doit( RIFF_HEADER, XAChunkSize );
doit( RIFF_HEADER, OwnerId );
doit( RIFF_HEADER, Attributes );
doit( RIFF_HEADER, SignatureXA );
doit( RIFF_HEADER, FileNumber );
doit( RIFF_HEADER, Reserved );
doit( RIFF_HEADER, SignatureData );
doit( RIFF_HEADER, RawSectors );
}
printf("\n");
{
AUDIO_PLAY_HEADER d;
doit( AUDIO_PLAY_HEADER, Chunk );
doit( AUDIO_PLAY_HEADER, ChunkSize );
doit( AUDIO_PLAY_HEADER, SignatureCDDA );
doit( AUDIO_PLAY_HEADER, SignatureFMT );
doit( AUDIO_PLAY_HEADER, FMTChunkSize );
doit( AUDIO_PLAY_HEADER, FormatTag );
doit( AUDIO_PLAY_HEADER, TrackNumber );
doit( AUDIO_PLAY_HEADER, DiskID );
doit( AUDIO_PLAY_HEADER, StartingSector );
doit( AUDIO_PLAY_HEADER, SectorCount );
doit( AUDIO_PLAY_HEADER, TrackAddress );
doit( AUDIO_PLAY_HEADER, TrackLength );
}
printf("\n");
{
RAW_ISO_VD d;
doit( RAW_ISO_VD, DescType );
doit( RAW_ISO_VD, StandardId );
doit( RAW_ISO_VD, Version );
doit( RAW_ISO_VD, VolumeFlags );
doit( RAW_ISO_VD, SystemId );
doit( RAW_ISO_VD, VolumeId );
doit( RAW_ISO_VD, Reserved );
doit( RAW_ISO_VD, VolSpaceI );
doit( RAW_ISO_VD, VolSpaceM );
doit( RAW_ISO_VD, CharSet );
doit( RAW_ISO_VD, VolSetSizeI );
doit( RAW_ISO_VD, VolSetSizeM );
doit( RAW_ISO_VD, VolSeqNumI );
doit( RAW_ISO_VD, VolSeqNumM );
doit( RAW_ISO_VD, LogicalBlkSzI );
doit( RAW_ISO_VD, LogicalBlkSzM );
doit( RAW_ISO_VD, PathTableSzI );
doit( RAW_ISO_VD, PathTableSzM );
doit( RAW_ISO_VD, PathTabLocI );
doit( RAW_ISO_VD, PathTabLocM );
doit( RAW_ISO_VD, RootDe );
doit( RAW_ISO_VD, VolSetId );
doit( RAW_ISO_VD, PublId );
doit( RAW_ISO_VD, PreparerId );
doit( RAW_ISO_VD, AppId );
doit( RAW_ISO_VD, Copyright );
doit( RAW_ISO_VD, Abstract );
doit( RAW_ISO_VD, Bibliograph );
doit( RAW_ISO_VD, CreateDate );
doit( RAW_ISO_VD, ModDate );
doit( RAW_ISO_VD, ExpireDate );
doit( RAW_ISO_VD, EffectDate );
doit( RAW_ISO_VD, FileStructVer );
doit( RAW_ISO_VD, Reserved3 );
doit( RAW_ISO_VD, ResApp );
doit( RAW_ISO_VD, Reserved4 );
}
printf("\n");
{
RAW_HSG_VD d;
doit( RAW_HSG_VD, BlkNumI );
doit( RAW_HSG_VD, BlkNumM );
doit( RAW_HSG_VD, DescType );
doit( RAW_HSG_VD, StandardId );
doit( RAW_HSG_VD, Version );
doit( RAW_HSG_VD, VolumeFlags );
doit( RAW_HSG_VD, SystemId );
doit( RAW_HSG_VD, VolumeId );
doit( RAW_HSG_VD, Reserved );
doit( RAW_HSG_VD, VolSpaceI );
doit( RAW_HSG_VD, VolSpaceM );
doit( RAW_HSG_VD, CharSet );
doit( RAW_HSG_VD, VolSetSizeI );
doit( RAW_HSG_VD, VolSetSizeM );
doit( RAW_HSG_VD, VolSeqNumI );
doit( RAW_HSG_VD, VolSeqNumM );
doit( RAW_HSG_VD, LogicalBlkSzI );
doit( RAW_HSG_VD, LogicalBlkSzM );
doit( RAW_HSG_VD, PathTableSzI );
doit( RAW_HSG_VD, PathTableSzM );
doit( RAW_HSG_VD, PathTabLocI );
doit( RAW_HSG_VD, PathTabLocM );
doit( RAW_HSG_VD, RootDe );
doit( RAW_HSG_VD, VolSetId );
doit( RAW_HSG_VD, PublId );
doit( RAW_HSG_VD, PreparerId );
doit( RAW_HSG_VD, AppId );
doit( RAW_HSG_VD, Copyright );
doit( RAW_HSG_VD, Abstract );
doit( RAW_HSG_VD, CreateDate );
doit( RAW_HSG_VD, ModDate );
doit( RAW_HSG_VD, ExpireDate );
doit( RAW_HSG_VD, EffectDate );
doit( RAW_HSG_VD, FileStructVer );
doit( RAW_HSG_VD, Reserved3 );
doit( RAW_HSG_VD, ResApp );
doit( RAW_HSG_VD, Reserved4 );
}
printf("\n");
{
RAW_DIRENT d;
doit( RAW_DIRENT, DirLen );
doit( RAW_DIRENT, XarLen );
doit( RAW_DIRENT, FileLoc );
doit( RAW_DIRENT, FileLocMot );
doit( RAW_DIRENT, DataLen );
doit( RAW_DIRENT, DataLenMot );
doit( RAW_DIRENT, RecordTime );
doit( RAW_DIRENT, FlagsHSG );
doit( RAW_DIRENT, FlagsISO );
doit( RAW_DIRENT, IntLeaveSize );
doit( RAW_DIRENT, IntLeaveSkip );
doit( RAW_DIRENT, Vssn );
doit( RAW_DIRENT, VssnMot );
doit( RAW_DIRENT, FileIdLen );
doit( RAW_DIRENT, FileId );
}
printf("\n");
{
RAW_PATH_ISO d;
doit( RAW_PATH_ISO, DirIdLen );
doit( RAW_PATH_ISO, XarLen );
doit( RAW_PATH_ISO, DirLoc );
doit( RAW_PATH_ISO, ParentNum );
doit( RAW_PATH_ISO, DirId );
}
printf("\n");
{
RAW_PATH_HSG d;
doit( RAW_PATH_HSG, DirLoc );
doit( RAW_PATH_HSG, XarLen );
doit( RAW_PATH_HSG, DirIdLen );
doit( RAW_PATH_HSG, ParentNum );
doit( RAW_PATH_HSG, DirId );
}
printf("\n");
{
SYSTEM_USE_XA d;
doit( SYSTEM_USE_XA, OwnerId );
doit( SYSTEM_USE_XA, Attributes );
doit( SYSTEM_USE_XA, Signature );
doit( SYSTEM_USE_XA, FileNumber );
doit( SYSTEM_USE_XA, Reserved );
}
}