c# - 空白 DVD/蓝光光盘 (IMAPI) 上的可用空间

标签 c# .net imapi

由于我最初的问题有点太模糊,让我澄清一下。

我的目标是:

  1. 通过 IMAPI 选择文件系统后估计空白磁盘大小
  2. 估计如果我刻录我的文件将占用这张光盘的空间。

我想知道的:

  1. 是否可以通过编程方式为所选文件系统获取每个扇区的字节数
  2. 如果没有,IMAPI 用于不同文件系统/媒体类型的每个扇区字节数是否有默认值,是否有记录在某处。

最佳答案

好的,所以对我的问题的简短回答是:可以安全地假设,DVD/BD 光盘的扇区大小 = 2048 字节。

我在调试 session 期间获得不同大小的原因是因为代码错误,它检索了扇区数:)

提到的代码块是从 http://www.codeproject.com/Articles/24544/Burning-and-Erasing-CD-DVD-Blu-ray-Media-with-C-an 复制粘贴的,以防万一我发布了一个快速修复。

原代码:

discFormatData = new MsftDiscFormat2Data();
discFormatData.Recorder = discRecorder;
IMAPI_MEDIA_PHYSICAL_TYPE mediaType = discFormatData.CurrentPhysicalMediaType;
fileSystemImage = new MsftFileSystemImage();
fileSystemImage.ChooseImageDefaultsForMediaType(mediaType);
if (!discFormatData.MediaHeuristicallyBlank)
{
     fileSystemImage.MultisessionInterfaces = discFormatData.MultisessionInterfaces;
     fileSystemImage.ImportFileSystem();
}
Int64 freeMediaBlocks = fileSystemImage.FreeMediaBlocks;

固定代码:

discFormatData = new MsftDiscFormat2Data { Recorder = discRecorder };
fileSystemImage = new MsftFileSystemImage();
fileSystemImage.ChooseImageDefaults(discRecorder);
if (!discFormatData.MediaHeuristicallyBlank)
{
    fileSystemImage.MultisessionInterfaces = discFormatData.MultisessionInterfaces;
    fileSystemImage.ImportFileSystem();
}
Int64 freeMediaBlocks = fileSystemImage.FreeMediaBlocks;

关于c# - 空白 DVD/蓝光光盘 (IMAPI) 上的可用空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12423357/

相关文章:

c# - 如何在 C# 中修复无法表示的 DateTime

.net - 如何将两个组合框的所选项目与单个DataSource分开?

c# - 如何在C#应用程序中没有IMAPI的情况下检测CD/DVD驱动器中的媒体类型?

c# - 如何使用 C# 查找字符串模式并从我的文本文件中打印它

c# - 跳过文件中的行;通用扩展方法

C# ODBC 异常不正确的字符串值

c# - .NET 平台中的哪些类使用 Singleton 设计模式?

c# - 发送预约后获取预约 ID

c# - 在 XBAP 中刻录 CD

IMAPI:get_MediaPhysicallyBlank 和 get_MediaHeuristicallyBlank 之间有什么区别?