NtFsControlFile()和DeviceIoControl()函数有什么区别?

时间:2010-06-07 14:44:59

标签: winapi

有没有哪个地方比另一个更好?使用一个而不是另一个会对性能产生影响吗?

2 个答案:

答案 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。