boot cd_rom struct
资料:
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[]; //Standard Identifier[CD001]
char VolDesVer; //Volume Descriptor Version[1]
char Reserved1; //[0x00]
char SystemId[]; //System Identifier[a-characters allowed18]
char VolumeId[]; //Volume Identifier[d-characters allowed19]
char Reserved2[]; //[0x00]
unsigned long dwVolSpaSizeLow; //Number of logical blocks in the Volume.
unsigned long dwVolSpaSizeHigh;
char Reserved3[]; //[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[];
char VolSetId[]; //Volume Set Identifier. d-characters allowed.
char PublisherId[]; //Publisher Identifier. a-characters allowed.
char DataPerId[]; //Data Perparer Identifier. a-characters allowed.
char AppId[]; //Applicatoin Identifier.
char CopyrightFileId[]; //Copyright File Identifier.
char AbbstractFileId[]; //Abstract File Identifier.
char BiblioFileId[]; //Bibliographic File Identifier.
char VolCreaDT[]; //Volume Creation Date and Time.
char VolModifDT[]; //Volume Modification Date and Time.
char VolExpirDT[]; //Volume Expiration Date and Time.
char VolEffecDT[]; //Volume Effective Data and Time.
char FileStrucVer; //File Structure Version[1]
char Reserved4; //Reserved for future standardization.[0x00]
char AppUse[]; //Application Use.
char Reserved5[]; //Reserved for future standardization.[0x00]
}PRIMARY_VOLUME_DESCRIPTOR, *PPRIMARY_VOLUME_DESCRIPTOR;
#pragma pack(pop)
Date and Time:
Represented by seven bytes:
1: Number of years since 1900
2: Month of the year from 1 to 12
3: Day of the Month from 1 to 31
4: Hour of the day from 0 to 23
5: Minute of the hour from 0 to 59
6: second of the minute from 0 to 59
7: Offset from Greenwich Mean Time in Number of
15 minute intervals from -48(West) to +52(East)
boot CD_ROM:
offset: 16*2048[0x8000]
The Primary Volume Descriptor
offset: 17*2048[0x8800]
Boot Record Volume Descriptor
#pragma pack(push,1)
typedef struct _BOOTRECORD_VOLUME_DESCRIPTOR
{
char BootRecordInd; //Boot Record Indicator, must be 0.
char ISO_9660Id[]; //ISO-9660 Identifier, must be "CD001".
char VolVer; //Version of this descriptor, must be 1.
char BootSystemId[]; //Boot System Identifier, must be "EL TORITO SPECIFICATION" padded with 0's.
char Reserved1[]; //Unused, must be 0.
unsigned long dwSecOfBootCatalog; //Absolute pointer to first sector of Boot Catolog.
char Reserved2[]; //Unused, must be 0.
}BOOTRECORD_VOLUME_DESCRIPTOR, *PPBOOTRECORD_VOLUME_DESCRIPTOR;
#pragma pack(pop)
Booting Catalog:
1. Validation Entry
#pragma pack(push,1)
typedef struct _BC_VALIDATION_ENTRY
{
char HeaderID; //Header ID, must be 01.
char PlatformID; //Platform ID. 0=80x86, 1=Power PC, 2=Mac
unsigned short wReserved; //Reserved, must be 0.
char DeveloperID[]; //ID string. to identify the developer of the CD_ROM
unsigned short wChecksum; //Chaecksum Word. This sum of all the words in this record should be 0.
char kb55; //Key byte,must be 0x55
char kbAA; //key byte,must be 0xAA
} BC_VALIDATION_ENTRY, *PBC_VALIDATION_ENTRY;
#pragma pack(pop)
2. Initial.Default Entry
#pragma pack(push,1)
typedef struct _BC_VALIDATION_ENTRY
{
char HeaderID; //Header ID, must be 01.
char PlatformID; //Platform ID. 0=80x86, 1=Power PC, 2=Mac
unsigned short wReserved; //Reserved, must be 0.
char DeveloperID[]; //ID string. to identify the developer of the CD_ROM
unsigned short wChecksum; //Chaecksum Word. This sum of all the words in this record should be 0.
char kb55; //Key byte,must be 0x55
char kbAA; //key byte,must be 0xAA
} BC_VALIDATION_ENTRY, *PBC_VALIDATION_ENTRY;
#pragma pack(pop)
2.1 Boot media type.
This specifies what media the boot image is intended to
emulate in bits 0-3 as follows, bits 4-7 are reserved and must be 0.
Bits 0-3 count as follows:
0 No Emulation
1 1.2 meg diskette
2 1.44 meg diskette
3 2.88 meg diskette
4 Hard Disk (drive 80)
5-F Reserved, invalid at this time
3. Section Header
#pragma pack(push,1)
typedef struct _BC_SECTION_HEADER_ENTRY
{
char HeaderInd; //Header Indicator as follows: 90-Header more headers follow, 91-Final Header
char PlatformID; //Platform ID. 0=80x86, 1=Power PC, 2=Mac
unsigned short wNumber; //Number of section entries following this header
char ID[]; //ID string
} BC_SECTION_HEADER_ENTRY, *PBC_SECTION_HEADER_ENTRY;
#pragma pack(pop)
4. Section Entry
#pragma pack(push,1)
typedef struct _BC_SECTION_ENTRY
{
char BootInd; //Boot Indicator. 88=Bootable, 00=Not Bootable
char BootMediaType; //Boot media type.
unsigned short wLoadSegment; //Load Segment. 0 use 0x7C0, non-zero use the specified segment.
char SystemType; //System Type.
char Reserved1; //Unused, must be 0
unsigned short wSectorCount; //Sector Count.
unsigned long dwLoadRBA; //Load RBA. CD's use Relative/Logical block addressing.
char CriteriaType; //Selection criteria type.
char UniqueCriteria[]; //Vendor unique selection criteria.
} BC_SECTION_ENTRY, *PBC_SECTION_ENTRY;
#pragma pack(pop)
4.1 Boot media type.
This specifies what media the boot image emulates in bits 0-32.
Bits 6 and 7 are specific to the type of system.
Bits 0-3 count as follows
0 No Emulation
1 1.2 meg diskette
2 1.44 meg diskette
3 2.88 meg diskette
4 Hard Disk (drive 80)
5-F Reserved, invalid at this time
bit 4 - Reserved, must be 0
bit 5 - Continuation Entry Follows
bit 6 - Image contains an ATAPI driver
bit 7 - Image contains SCSI drivers
4.2 Selection criteria type.
This defines a vendor unique format for bytes 0D-1F.
The following formats have currently been assigned:
0 - No selection criteria
1- Language and Version Information (IBM)
2-FF - Reserved
5. Section Entry Extension
#pragma pack(push,1)
typedef struct _BC_SECTION_ENTRY_EXT
{
char ExtInd; //Extension Indicator. must be 0x44
char Follow; //Bits 1-4:Unused, 5:1=Extension Record follows, 0=This is final Extension, 6-7:Unused
char UniqueCriteria[]; //Vendow unique selection criteria
} BC_SECTION_ENTRY_EXT, *PBC_SECTION_ENTRY_EXT;
#pragma pack(pop)
boot cd_rom struct的更多相关文章
- Python GIL 多线程机制 (C source code)
最近阅读<Python源码剖析>对进程线程的封装解释: GIL,Global Interpreter Lock,对于python的多线程机制非常重要,其如何实现的?代码中实现如下: 指向一 ...
- Linux时间子系统(四) timekeeping
一.前言 timekeeping模块是一个提供时间服务的基础模块.Linux内核提供各种time line,real time clock,monotonic clock.monotonic raw ...
- 计算机启动boot
原创博文:转载请标明出处:http://www.cnblogs.com/zxouxuewei 零.boot的含义 先问一个问题,"启动"用英语怎么说? 回答是boot.可是,boo ...
- MIT JOS学习笔记01:环境配置、Boot Loader(2016.10.22)
未经许可谢绝以任何形式对本文内容进行转载! 一.环境配置 关于MIT课程中使用的JOS的配置教程网上已经有很多了,在这里就不做介绍,个人使用的是Ubuntu 16.04 + qemu.另注,本文章中贴 ...
- 使用spring boot和thrift、zookeeper建立微服务
Spring cloud适应于云端服务,也适用于企业信息化SOA建设.spring boot也是restful微服务开发的利器.但对于内网服务,即服务与服务之间的调用,spring并没有去刻意封装,也 ...
- android boot.img 结构
android 的boot.img 包括 boot header,kernel, ramdisk 首先来看看Makefile是如何产生我们的boot.img的: boot镜像不是普通意义上的文件系统, ...
- boot.img的分析
1 boot.img boot.img是由文件头信息,内核数据以及文件系统数据组成,它们之间非页面对齐部分用0填充 文件头信息的具体结构可以在system/core/mkbootimg/bootim ...
- 嵌入式系统 Boot Loader 技术内幕
转载:http://www.ibm.com/developerworks/cn/linux/l-btloader/index.html 1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统 ...
- u-boot分析——struct gd_t与struct bd_t
gd_t和bd_t是u-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递.分别定义在./include/asm/global_data.h和./include/asm/u ...
随机推荐
- 缓存机制和Hibernate的缓存机制介绍
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能.缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事 ...
- ASTER:An Attentional Scene Text Recognizer with Flexible Rectification
代码链接:https://github.com/bgshih/aster 方法概述 本文方法主要解决不规则排列文字的文字识别问题,论文为之前一篇CVPR206的paper(Robust Scene T ...
- 从ext4将mysql数据目录移动至lustre出现(InnoDB: Unable to lock ./ibdata1, error: 38.)
因为数据目录过大,因此我把目录从本地移到了共享存储中.在修改了/etc/my.cnf和/etc/init.d/mysqld之后发现数据库可以运行,但启动速度很慢 原因是原文件系统是ext4,而目标文件 ...
- influxdb 配置文件注释
### Welcome to the InfluxDB configuration file. # The values in this file override the default value ...
- java FileReader/FileWriter读写文件
java FileReader/FileWriter读写字母和数字没问题,但读写汉字就乱码.记录下,后面找到解决方法再补上. public static void main(String[] args ...
- javascript 获取函数形参个数
分享下javascript获取函数形参个数的方法. /** * 获取函数的形参个数 * @param {Function} func [要获取的函数] * @return {*} [形参的数组或und ...
- git将本地项目添加到github上
git init git add . git commit -m '添加备注' git add remote origin originUrl git push -u origin master 注意 ...
- android笔记---主界面(二)自定义actionbar环境的配置
第一步,添加java文件 第二步,添加actionbar的item文件 是个选择器,点中状态和选中状态 <?xml version="1.0" encoding=" ...
- 四步法分析定位生产环境下MySQL上千条SQL中的问题所在
第一步:通过以下两种方式之一来打开慢查询功能 (1)方式一:通过修改mysql的my.cnf文件 如果是5.0或5.1等版本需要增加以下选项: log-slow-queries="mysql ...
- android使用POI读写word doc文件
目录 1 读word doc文件 1.1 通过WordExtractor读文件 1.2 通过HWPFDocument读文件 2 写word doc文件 Apache p ...