有没有哪个地方比另一个更好?使用一个而不是另一个会对性能产生影响吗?
答案 0 :(得分:2)
@Alex K。:小注:NtFsControlFile
记录在http://msdn.microsoft.com/en-us/library/ff566462(v=VS.85).aspx中。内核模式应用程序应使用ZwFsControlFile
函数,用户模式应用程序可以使用NtFsControlFile
。
@vedang:从你的问题我会假设你不是内核模式驱动程序的开发人员。因此,我强烈建议您仅使用 DeviceIoControl
发送FSCTL_XXX
代码http://msdn.microsoft.com/en-us/library/aa364230(v=VS.85).aspx。
仅当您计划编写不使用Win32子系统的应用程序并且仅使用NT本机子系统时,就像在Windows启动开始时运行的小型checkdisk应用程序或磁盘碎片整理应用程序(请参阅会话管理器注册表项)你将有利于使用NtFsControlFile
。在通常工作的所有情况下,您应该只使用DeviceIoControl
。
答案 1 :(得分:1)
我不知道实现,但是NtFsControlFile
是一个未记录的内核,它的使用带来的风险是它将来会在某个时刻消失/改变实现,而DeviceIoControl
是其中的一部分公共Win32 API。