如何在Windows 8上没有PInvoke或Admin提升的情况下获得.NET中的物理扇区大小

时间:2012-12-29 12:37:58

标签: c# .net windows-8

我知道在Windows 8 \ server 2012中有一个名为FileFsSectorSizeInformation的新本机API可以从任何文件句柄中获取物理扇区大小,即使在没有admain提升的SMB2上也是如此。我正在寻找.NET等价物。以下是有关原生方式的更多信息。

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

http://msdn.microsoft.com/en-us/library/jj216474.aspx

我正在使用.NET 4.5

1 个答案:

答案 0 :(得分:3)

不,那不是由.NET包装的。它不是api,它是驱动程序控制代码。您需要对DeviceIoControl()进行pinvoke才能使用它。 .NET通常避免使用这些低级驱动程序实现细节,因此很难在Windows版本中保持稳定。

请注意这里,你所考虑的事情一般没有多大意义。调用FileStream.Flush()是必要的,以确保在程序崩溃之前写入日志记录数据,这样您就可以确保拥有最新的日志。将 true 传递给过载对于perf非常不利,磁盘写入非常慢,只有当您的程序习惯对机器进行蓝屏时才需要。那么你应该对驱动器扇区的大小非常不感兴趣。因为您可以利用这些知识的唯一方法是缓冲日志数据。如果你也使用Flush(),那么缓冲是你想要做的最后一件事。