Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在IMAPI接口中可以选择cd写入模式吗?

在IMAPI接口中可以选择cd写入模式吗?
EN

Stack Overflow用户
提问于 2011-02-02 04:18:51
回答 1查看 1.1K关注 0票数 2

我正在使用IMAPIv2在我的C#项目中刻录CD/DVD。我意识到接口是XA格式的(模式2)。我认为XA格式主要用于ISO。关于网络上的IMAPIv2的许多例子使用了以下方法来演示总的磁盘空间和空闲空间:

代码语言:javascript
运行
AI代码解释
复制
discFormatData.Recorder = discRecorder;
IMAPI_MEDIA_PHYSICAL_TYPE mediaType = discFormatData.CurrentPhysicalMediaType;
this.MediaType = GetMediaTypeString(mediaType);
fileSystemImage = new MsftFileSystemImage();
fileSystemImage.ChooseImageDefaultsForMediaType(mediaType);
MediaStateString = GetMediaStatus(discFormatData.CurrentMediaStatus);
if (discFormatData.MediaHeuristicallyBlank) MediaStateString = "Blank";

Int64 freeMediaBlocks = discFormatData.FreeSectorsOnMedia;
this.TotalDiscCapacity = 2048 * freeMediaBlocks;
Int64 userMediaBlocks = discFormatData.TotalSectorsOnMedia - discFormatData.FreeSectorsOnMedia;
this.TotalUsedDiscSpace = 2048 * userMediaBlocks;

不幸的是,如果我用上面描述的TotalSectorsOnMedia乘以2048 *,我将无法获得正确的总磁盘容量。当我用IMAPIv2烧录一个容量为800 MB的磁盘时,上面的代码将显示我的磁盘容量大约在650 MB左右。当我用其他软件燃烧器检查磁盘时,我看到模式被设置为XA。是否可以在燃烧前设置此模式?此外,如果有以模式1编写的会话,我将如何解决确定磁盘空闲空间的问题?是否有可能知道光盘是以哪种方式写的?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-11-13 07:22:04

为了获得总磁盘容量,您需要将扇区的数量乘以每个扇区上用户数据字段的长度(在CD/XA (eXtended体系结构)模式2上,该模式的长度为2336字节,而不是2048年)。

CD上的扇区保存2048字节的用户数据,留下304字节用于其他目的.每个数据扇区都以一个16字节的头开头:

  • 12字节同步字段(00 ff 00)
  • 3字节地址(分钟,秒,分数(1/75)秒)
  • 1字节模式

模式字节确定扇区中剩余的2336字节是什么样子:

  • 模式0:空数据;对CD记录没有实际用途。
  • 模式1:典型的CD-ROM布局2048字节的用户数据,4字节的EDC (错误检测代码,32位的CRC) 8字节的保留空间,设置为零172字节的"P“奇偶,104字节的"Q”奇偶。
  • 模式2: 2336字节的用户数据,通常用于CD-ROM/XA

为了检索为同一轨道中的扇区提供的数据类型,可以从IRawCDImageTrackInfo接口中使用IRawCDImageTrackInfo方法。

可能的扇区类型由类型枚举定义:

代码语言:javascript
运行
AI代码解释
复制
typedef enum  { 
 IMAPI_CD_SECTOR_AUDIO          = 0x00,
 IMAPI_CD_SECTOR_MODE_ZERO      = 0x01,
 IMAPI_CD_SECTOR_MODE1          = 0x02,
 IMAPI_CD_SECTOR_MODE2FORM0     = 0x03,
 IMAPI_CD_SECTOR_MODE2FORM1     = 0x04,
 IMAPI_CD_SECTOR_MODE2FORM2     = 0x05,
 IMAPI_CD_SECTOR_MODE1RAW       = 0x06,
 IMAPI_CD_SECTOR_MODE2FORM0RAW  = 0x07,
 IMAPI_CD_SECTOR_MODE2FORM1RAW  = 0x08,
 IMAPI_CD_SECTOR_MODE2FORM2RAW  = 0x09
} IMAPI_CD_SECTOR_TYPE;

  • 在这种扇区类型的IMAPI_CD_SECTOR_AUDIO中,音频数据每个扇区/帧有2352字节。这可以分解为588个连续的样本,每个样本是4个字节。单个示例的布局与16位立体声44.1KHz WAV文件数据匹配。这种类型的扇区没有额外的纠错代码。
  • 具有这种扇区类型的IMAPI_CD_SECTOR_MODE_ZERO,每个扇区/帧的用户数据有2336字节。这种很少使用的扇区类型包含所有的零数据,在今天的媒体中几乎从未见过。
  • 具有这种扇区类型的IMAPI_CD_SECTOR_MODE1,每个扇区/帧的用户数据有2048字节。Mode1数据是按下光盘媒体中最常见的数据格式.此数据类型还提供了标准扇区类型中最大级别的ECC/EDC。
  • 具有这种扇区类型的IMAPI_CD_SECTOR_MODE2FORM0,每个扇区/帧的用户数据有2336字节。所有模式2扇区类型也被称为“CD”模式,它允许在单个光盘上混合音频和数据轨道。这种扇区类型也被称为模式2“无形式”,被认为是废弃的,而且很少使用。
  • 具有这种扇区类型的IMAPI_CD_SECTOR_MODE2FORM1,每个扇区/帧的用户数据有2048字节。所有模式2扇区类型也被称为“CD”模式,它允许在单个光盘上混合音频和数据轨道。
  • 对于这种扇区类型的IMAPI_CD_SECTOR_MODE2FORM2,每个扇区/帧的用户数据有2336字节,其中最后四个字节是可选的CRC代码(如果不使用则为零)。所有模式2扇区类型也被称为“CD”模式,它允许在单个光盘上混合音频和数据轨道。这种扇区类型在编写VideoCD光盘时最常用。
  • 具有这种扇区类型的IMAPI_CD_SECTOR_MODE1RAW,每个扇区/帧的用户数据有2352字节。这是预处理的Mode1Cooked数据扇区,扇区标头、ECC/EDC以及已经添加到数据流中的扰码。
  • 具有这种扇区类型的IMAPI_CD_SECTOR_MODE2FORM0RAW,每个扇区/帧的用户数据有2352字节。这是预处理的Mode2Form0数据扇区,扇区标头、ECC/EDC以及已经添加到数据流中的扰码。
  • 具有这种扇区类型的IMAPI_CD_SECTOR_MODE2FORM1RAW,每个扇区/帧的用户数据有2352字节。这是预处理的Mode2Form1数据扇区,扇区标头、ECC/EDC以及已经添加到数据流中的扰码。
  • 具有这种扇区类型的IMAPI_CD_SECTOR_MODE2FORM2RAW,每个扇区/帧的用户数据有2352字节。这是预处理的Mode2Form2数据扇区,扇区标头、ECC/EDC以及已经添加到数据流中的扰码。

备注:某些扇区类型与单个映像中的其他扇区类型不兼容。以下是这种情况的典型例子:如果第一个音轨是音频,那么所有的音轨都必须是音频的。如果第一首曲目是Mode1,那么所有曲目都必须是Mode1。只有三个Mode2 (XA)扇区(模式2形式0、模式2表单1和模式2表单2)可以在单个磁盘映像中混合,即使这样,也只能与其他模式2 (XA)扇区类型混合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4874374

复制
相关文章
访问令牌JWT
By reference token(透明令牌),随机生成的字符串标识符,无法简单猜测授权服务器如何颁 发和存储资源服务器必须通过后端渠道,发送回OAuth2授权服务器的令牌检查端点,才能校验令牌 是否有效,并获取claims/scopes等额外信息
乐心湖
2020/08/02
1.8K0
.NET周报【10月第1期 2022-10-11】
https://github.com/dotnet/runtimelab/pull/2002
InCerry
2022/11/14
5.1K0
访问令牌过期后,如何自动续期?
JWT是JSON Web Token的缩写,是为了在网络应用环境间传递声明而执行的- -种基于JSON的开放标准((RFC 7519)。JWT本身没有定义任何技术实现,它只是定义了一种基于Token的会话管理的规则,涵盖Token需要包含的标准内容和Token的生成过程,特别适用于分布式站点的单点登录(SSO) 场景。
Tinywan
2023/03/08
2.8K0
访问令牌过期后,如何自动续期?
XXL-JOB访问令牌(AccessToken)设置
为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;
Li_XiaoJin
2022/12/28
21.6K0
XXL-JOB访问令牌(AccessToken)设置
如何在你的文章中添加隐藏的版权信息
现在有4个中文汉字: 我是青南,首先介绍Python的 ord函数,它可以查询Unicode字符对应的Unicode码
青南
2019/03/18
1.8K0
如何在你的文章中添加隐藏的版权信息
C/C++ 实现提升访问令牌权限
在我们编程实现一些系统操作的时候,往往要求我们执行操作的进程拥有足够的权限方可成功操作。比如,我们使用 ExitWindows 函数实现关机或重启操作的时候,就要求我们的进程要有 SE_SHUTDOWN_NAME 的权限,否则,会忽视不执行操作。这时,我们唯一能够做的,就是按照要求,提升我们进程的权限。
王瑞MVP
2022/12/28
8290
Antlr4 语法解析器(下)
Antlr4 的两种AST遍历方式:Visitor方式 和 Listener方式。
awwewwbbb
2021/07/16
3.7K0
Antlr4  语法解析器(下)
初识CEL(一)
CEL是一种非图灵的完整表达式语言,被设计为快速、可移植和安全执行。CEL可以单独使用,也可以嵌入到一个更大的产品中。
rxg456
2022/06/16
2.9K0
如何在 Python 中隐藏和加密密码?
有多种 Python 模块用于隐藏用户输入的密码,其中一个是**maskpass()模块。在 Python 中,借助maskpass()模块和base64()**模块,我们可以在输入时使用星号(*) 隐藏用户的密码,然后借助 base64() 模块可以对其进行加密。
海拥
2022/04/13
2.3K0
一门语言的作用域和函数调用是如何实现的
上次利用 Antlr 重构一版 用 Antlr 重构脚本解释器 之后便着手新增其他功能,也就是现在看到的支持了作用域以及函数调用。
crossoverJie
2022/10/27
6190
一门语言的作用域和函数调用是如何实现的
如何在Java中避免equals方法的隐藏陷阱(一)
常见的等价方法陷阱 java.lang.Object 类定义了equals这个方法,它的子类可以通过重载来覆盖它。不幸的是,在面向对象中写出正确的equals方法是非常困难的。事实上,在研究了大量的Java代码后,2007 paper的作者得出了如下的一个结论: 几乎所有的equals方法的实现都是错误的! 这个问题是因为等价是和很多其他的事物相关联。例如其中之一,一个的类型C的错误等价方法可能意味着你无法将这个类型C的对象可信赖的放入到容器中。比如说,你有两个元素elem1和elem2他们都是类型C的对象
java达人
2018/01/31
1.9K0
如何在iOS 7.0中隐藏状态栏
使用Cordova做了一个小项目,在原来iOS6的时候显示挺好,升级为iOS7后,每次App启动后都会显示状态栏,而且状态栏和App的标题栏重叠在一起,非常难看,因此需要将状态栏隐藏起来。
大江小浪
2018/07/24
1.3K0
如何在iOS 7.0中隐藏状态栏
如何在Java中避免equals方法的隐藏陷阱(二)
陷阱3:建立在会变化字段上的equals定义 让我们在Point类做一个非常微小的变化 public class Point { private int x; private int y; public Point(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public int getY() {
java达人
2018/01/31
1.8K0
如何在Vue组件中访问Vuex store中的状态?
在Vue组件中访问Vuex store中的状态,可以通过计算属性 (computed properties) 或者直接通过$store.state来实现。
王小婷
2023/10/02
8400
浅尝antlr4
这次使用antlr的诱因是whosbug中使用的ctags(另一个语法分析器)只对c系语言支持较好,对java等语言的支持欠佳(甚至可以说很差了),为了whosbug的鲁棒性我认为还是有必要换一个语法分析器的
Kevinello
2022/08/19
1.8K0
浅尝antlr4
打破国外垄断,开发中国人自己的编程语言(1):编写解析表达式的计算器
本文是《打破国外垄断,开发中国人自己的编程语言》系列文章的第1篇。本系列文章的主要目的是教大家学会如何从零开始设计一种编程语言(marvel语言),并使用marvel语言开发一些真实的项目,如移动App、Web应用等。marvel语言可以通过下面3种方式运行:
蒙娜丽宁
2020/07/30
2.4K1
打破国外垄断,开发中国人自己的编程语言(1):编写解析表达式的计算器
Milvus 向量数据库如何实现属性过滤
如下图所示,Milvus 运用 EBNF 语法,此处用等式和语法图体现了 Milvus 所支持的查询表达式的整体规则。
Zilliz RDS
2022/05/25
1.7K0
Milvus 向量数据库如何实现属性过滤
分享一篇详尽的关于如何在 JavaScript 中实现刷新令牌的指南
刷新令牌允许用户无需重新进行身份验证即可获取新的访问令牌,从而确保更加无缝的身份验证体验。这是通过使用长期刷新令牌来获取新的访问令牌来完成的,即使原始访问令牌已过期也是如此。
前端达人
2023/08/31
6960
分享一篇详尽的关于如何在 JavaScript 中实现刷新令牌的指南
点击加载更多

相似问题

ANTLR AST语法发出不匹配的令牌异常

11

使用Antlr中的访问者编辑AST

22

ANTLR AST和访问者模式

10

Antlr AST构造

10

ANTLR:在构建AST树时排除(跳过)令牌

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档