首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >空白dvd /blu射线光盘的可用空间(IMAPI)

空白dvd /blu射线光盘的可用空间(IMAPI)
EN

Stack Overflow用户
提问于 2012-09-14 11:11:48
回答 3查看 3K关注 0票数 10

既然我原来的问题有点含糊不清,让我澄清一下。

我的目标是:

  1. 通过IMAPI估计文件系统后的空白磁盘大小
  2. 若要估计文件在此光盘上所消耗的空间,请执行以下操作。

我想知道的是:

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

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-17 08:12:44

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

我在调试会话中获得不同大小的原因,是因为代码中出现了一个错误,其中检索到扇区计数:)

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

原始代码:

代码语言:javascript
复制
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;

固定代码:

代码语言:javascript
复制
discFormatData = new MsftDiscFormat2Data { Recorder = discRecorder };
fileSystemImage = new MsftFileSystemImage();
fileSystemImage.ChooseImageDefaults(discRecorder);
if (!discFormatData.MediaHeuristicallyBlank)
{
    fileSystemImage.MultisessionInterfaces = discFormatData.MultisessionInterfaces;
    fileSystemImage.ImportFileSystem();
}
Int64 freeMediaBlocks = fileSystemImage.FreeMediaBlocks;
票数 4
EN

Stack Overflow用户

发布于 2012-09-14 13:03:00

如果您知道空闲/已使用的块和存储卷的总大小(忽略已使用/空闲的空间),那么您可以计算每个块的大小,然后计算出其余的。

代码语言:javascript
复制
block size = total size / (blocks used + blocks free)
free space = size per block * blocks free

如果你发现这个块状的尺寸不是1K,我会很惊讶

票数 0
EN

Stack Overflow用户

发布于 2012-09-14 15:49:17

通过IMAPI - IWriteEngine2::get_BytesPerSector

http://msdn.microsoft.com/en-us/library/windows/desktop/aa832661(v=vs.85).aspx

该项目使用托管IMAPI2包装器来简化生活- http://www.codeproject.com/Articles/24544/Burning-and-Erasing-CD-DVD-Blu-ray-Media-with-C-an

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

https://stackoverflow.com/questions/12423357

复制
相关文章

相似问题

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