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 ...
随机推荐
- java对象内存占用
一.前言想知道java对象在内存中的占用情况吗?感谢这位大神的无私分享. http://yueyemaitian.iteye.com/blog/2033046 二.原文的扩充1. 增加了代理jar包的 ...
- [转]如何在Windows 10中更改文件夹背景颜色
ini文件.我们甚至可以使用相同的技术将图片设置为文件夹背景. 已有工具可以更改Windows 7中Windows资源管理器背景的颜色,并将图像设置为Windows 7中的文件夹背景,但这些工具与Wi ...
- UI测试后生成测试报告,利用shell脚本上传svn
ui测试后生成测试报告,把报告保存在某一个固定路径 shell脚本把这个报告上传 #!/bin/bash -ile #svn下载文件 #svn checkout http://svn.xxx.com/ ...
- Vue 中组件概念
1 为了能在模板中使用,组件必须先注册以便 Vue 能够识别.这里有两种组件的注册类型:全局注册和局部注册. 1.1 全局注册是通过Vue.component 来向Vue注册,例子 Vue.compo ...
- MetInfo PHP的CMS,目测还不错
MetInfo PHP的CMS,目测还不错,先记录下来
- js省市级联实现
js省市级联实现. for [element] in [collection] 用于循环下标,常用于json for(index in arr){ console.info("下标:&quo ...
- WPF 项目升级错误
今天将一个 WPF 项目从 .NET 4.0 升级至 .NET 4.6.1 时,出现一个错误: 错误 未知的生成错误"程序集"PresentationFramewor ...
- JS 在 IE9 中出现奇怪的错误(参数是必选项 argument not optional)
最近发现之前运行正常的网站,在 IE9 下会报这个错误.网上查了一下,发现是跟我的方法名字有关... 我起了一个叫做 addFilter 名字的方法,但是很不巧,IE9 里也有一个这个名字的方法,所以 ...
- 2012版辅助开发工具包(ADT)新功能特性介绍及安装使用
原文链接:http://android.eoe.cn/topic/android_sdk 2012年的Android辅助设备开发工具包(ADK)是Android开放设备协议(AOA)设备的最新参考实现 ...
- Shell脚本大量示例
Shell基础之控制流结构 一.控制结构 几乎所有的脚本里都有某种流控制结构,很少有例外.流控制是什么?假定有一个脚本,包含下列几个命令: #!/bin/sh # make a directory ...