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

Nik*_*a B 8 .net c# imapi

由于我原来的问题有点过于模糊,让我澄清一下.

我的目标是:

  1. 通过IMAPI选择文件系统后估计空白光盘大小
  2. 如果我刻录它,估计我的文件将在此光盘上消耗的空间.

我想知道的是什么:

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

Nik*_*a B 4

好的,我的问题的简短答案是:可以放心地假设,DVD/BD 光盘的扇区大小 = 2048 字节。

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

提到的代码块是从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;
Run Code Online (Sandbox Code Playgroud)

固定代码:

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