Microsoft первоначально выпустила интерфейс IMAPI для C #.У него было много проблем.Вы можете прочитать больше об этом здесь .Поэтому я использую этот исходный код (написанный Эриком Хадданом для Code Project) вместо копии, выпущенной Microsoft.Таким образом, вы можете увидеть некоторые отличия в отношении документации.
Прежде чем вы начнете взаимодействовать со скоростью записи (получить / установить), вам нужно выполнить некоторые начальные действия, такие как настройка рекордера.Я предполагаю, что вы знаете все это и пропускаете это в этом ответе, чтобы сократить длину.
Чтобы установить скорость записи, вам необязательно сначала получить поддерживаемые скорости записи:
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
.
Следующее от Microsoft :
RequestedSectorsPerSecond
Запрошеноскорость записи измеряется в секторах диска в секунду.
Значение 0xFFFFFFFF (-1) запрашивает, чтобы запись осуществлялась с использованием самой быстрой поддерживаемой скорости для носителя.Это значение по умолчанию.
RotationTypeIsPureCAV
Требуемый тип управления скоростью вращения.Установите значение VARIANT_TRUE, чтобы запросить тип управления скоростью вращения с постоянной угловой скоростью (CAV).Установите VARIANT_FALSE, чтобы использовать другой тип управления скоростью вращения, который поддерживает рекордер.По умолчанию используется VARIANT_FALSE.
Имена объектов, использованных в приведенном выше коде, соответствуют самому IMAPI.Вот почему я не добавляю больше описания об интерфейсе IMAPI.Более подробную информацию уже дает другой ответ от @ rmp.