资料:
1、introduction_to_iso9660.pdf
2、boot-cdrom.pdf
Normal ISO9600:
offset: 16*2048[0x8000]
The Primary Volume Descriptor
#pragma pack(push,1) typedef struct _PRIMARY_VOLUME_DESCRIPTOR { char VolDesType; //Volume Descriptor Type[1] char StandardId[5]; //Standard Identifier[CD001] char VolDesVer; //Volume Descriptor Version[1] char Reserved1; //[0x00] char SystemId[32]; //System Identifier[a-characters allowed18] char VolumeId[32]; //Volume Identifier[d-characters allowed19] char Reserved2[8]; //[0x00] unsigned long dwVolSpaSizeLow; //Number of logical blocks in the Volume. unsigned long dwVolSpaSizeHigh; char Reserved3[32]; //[0x00] unsigned long dwVolSetSize; //The assigned Volume Set size of the Volume. unsigned long dwVolSeqNum; //The ordinal number of the volume in the Volume Set. unsigned long dwLogBlockSize; //The size in bytes of a Logical Block. unsigned long dwPathTabSizeLow; //Length in bytes of the path table. unsigned long dwPathTabSizeHigh; unsigned long dwLocTypeLPT; unsigned long dwLocOptionalTypeLPT; unsigned long dwLocTypeMPT; unsigned long dwLocOptionalTypeMPT; char DirRecTootDir[34]; char VolSetId[128]; //Volume Set Identifier. d-characters allowed. char PublisherId[128]; //Publisher Identifier. a-characters allowed. char DataPerId[128]; //Data Perparer Identifier. a-characters allowed. char AppId[128]; //Applicatoin Identifier. char CopyrightFileId[37]; //Copyright File Identifier. char AbbstractFileId[37]; //Abstract File Identifier. char BiblioFileId[37]; //Bibliographic File Identifier. char VolCreaDT[17]; //Volume Creation Date and Time. char VolModifDT[17]; //Volume Modification Date and Time. char VolExpirDT[17]; //Volume Expiration Date and Time. char VolEffecDT[17]; //Volume Effective Data and Time. char FileStrucVer; //File Structure Version[1] char Reserved4; //Reserved for future standardization.[0x00] char AppUse[512]; //Application Use. char Reserved5[653]; //Reserved for future standardization.[0x00] }PRIMARY_VOLUME_DESCRIPTOR, *PPRIMARY_VOLUME_DESCRIPTOR; #pragma pack(pop)