有人知道如何使用IMAPI2来设置CD/DVD刻录速度(例如4倍、10倍)吗?
另外,我首先需要得到媒体支持的速度。我怎么才能找回它们?
发布于 2013-11-14 08:03:00
这些方法使用每秒扇区,而不是4x、10x等。您可以使用以下常量从一个转换到另一个:
来自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
发布于 2019-03-07 08:21:31
微软最初为C#发布了IMAPI接口。它有很多问题。您可以阅读更多关于它的这里。因此,我使用这个源代码(由Eric编写的代码项目),而不是微软发布的副本。因此,您可能会看到与文档有关的一些差异。
在与写入速度(get/set)交互之前,需要执行一些初始操作,如设置记录器。我假设你知道这一切,在这个答案中跳过它来缩短长度。
要设置刻录速度,您需要首先获得支持的写入速度:
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;
}然后,根据上面接收到的受支持值,您可以设置写入速度:
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的其他答复已经给出了更多的细节。
https://stackoverflow.com/questions/5616986
复制相似问题