如何在.net中获得物理扇区大小,而无需在Windows 8上使用PInvoke或Admin提升

本文关键字:Windows 提升 Admin PInvoke net 扇区 | 更新日期: 2023-09-27 17:50:17

我知道在windows 8'server 2012中有一个名为FileFsSectorSizeInformation的新本地API,可以从任何文件句柄中获得物理扇区大小,即使在没有管理员提升的情况下也可以通过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

如何在.net中获得物理扇区大小,而无需在Windows 8上使用PInvoke或Admin提升

不,它不是由。net包装的。它不是api,它是一个驱动程序控制代码。你需要pinvoke DeviceIoControl()来使用它。. net通常会避免这些低级驱动程序实现细节,很难在Windows版本中保持它们的稳定。

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