首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用IMAPI2检索和设置刻录速度?

如何使用IMAPI2检索和设置刻录速度?
EN

Stack Overflow用户
提问于 2011-04-11 05:10:01
回答 2查看 1.6K关注 0票数 3

有人知道如何使用IMAPI2来设置CD/DVD刻录速度(例如4倍、10倍)吗?

另外,我首先需要得到媒体支持的速度。我怎么才能找回它们?

EN

回答 2

Stack Overflow用户

发布于 2013-11-14 08:03:00

  1. 要设置刻录速度,可以使用来自IDiscFormat2Data接口的方法IDiscFormat2Data。它允许您请求光学介质支持的最大速度或指定所需的烧录速度。
  2. 为了检索燃烧设备和当前媒体支持的写入速度,可以使用SupportedWriteSpeeds方法。
  3. 若要检查当前的写入速度,请使用CurrentWriteSpeed方法。

这些方法使用每秒扇区,而不是4x、10x等。您可以使用以下常量从一个转换到另一个:

  • 扇区中的IMAPI_SECTOR_SIZE字节数。
  • 以扇区每秒测量的CD旋转的IMAPI_SECTORS_PER_SECOND_AT_1X_CD基本速度。
  • DVD旋转的IMAPI_SECTORS_PER_SECOND_AT_1X_DVD基本速度,以扇区每秒测量。
  • 以扇区每秒测量的蓝光光盘旋转的IMAPI_SECTORS_PER_SECOND_AT_1X_BD基本速度.

来自imapi2.h头文件:

#定义IMAPI_SECTORS_PER_SECOND_AT_1X_CD 75 #定义IMAPI_SECTORS_PER_SECOND_AT_1X_DVD 680 #定义IMAPI_SECTORS_PER_SECOND_AT_1X_BD 2195 #定义IMAPI_SECTORS_PER_SECOND_AT_1X_HD_DVD 4568

票数 1
EN

Stack Overflow用户

发布于 2019-03-07 08:21:31

微软最初为C#发布了IMAPI接口。它有很多问题。您可以阅读更多关于它的这里。因此,我使用这个源代码(由Eric编写的代码项目),而不是微软发布的副本。因此,您可能会看到与文档有关的一些差异。

在与写入速度(get/set)交互之前,需要执行一些初始操作,如设置记录器。我假设你知道这一切,在这个答案中跳过它来缩短长度。

要设置刻录速度,您需要首先获得支持的写入速度:

代码语言:javascript
复制
private string[] GetSupportedWriteSpeeds()
{
    string[] list = new string[msftDiscFormat2Data.SupportedWriteSpeedDescriptors.Length];
    for(int i = 0; i < msftDiscFormat2Data.SupportedWriteSpeedDescriptors.Length; i++)
    {
        IWriteSpeedDescriptor objIWriteSpeedDescriptor = (IWriteSpeedDescriptor)msftDiscFormat2Data.SupportedWriteSpeedDescriptors[i];
        list[i] = objIWriteSpeedDescriptor.WriteSpeed.ToString();
    }
    return list;
}

然后,根据上面接收到的受支持值,您可以设置写入速度:

代码语言:javascript
复制
private void SetWriteSpeed(int requestedSectorsPerSecond, bool rotationTypeIsPureCAV)
{
    /*selectedWritingSpeed
        Unit = Disc sectors per second.
        Values: -
        -1 = "Default OR Fastest" as documented in IMAPI documentation.
        [ANY VALUE] = Actual writing speed to set.
    */
    msftDiscFormat2Data.SetWriteSpeed(requestedSectorsPerSecond, rotationTypeIsPureCAV);
}

在上面的方法中,参数requestedSectorsPerSecond是从前面的方法收到的字符串数组(写速度)的索引。您可以将旋转类型(纯CAV)设置为false

以下是微软发来的

RequestedSectorsPerSecond 要求的写入速度测量光盘扇区每秒。 值0xFFFFFFF (-1)请求使用媒体支持的最快速度进行写入。这是默认的。 RotationTypeIsPureCAV 要求转速控制类型。设置为VARIANT_TRUE请求恒定角速度(CAV)转速控制类型.设置为VARIANT_FALSE以使用记录器支持的另一种转速控制类型.默认情况是VARIANT_FALSE。

上面代码中使用的对象的名称是根据IMAPI本身。这就是为什么,我不会添加更多关于IMAPI接口的描述。@rmp的其他答复已经给出了更多的细节。

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

https://stackoverflow.com/questions/5616986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档