如何避免GetFileAttributes中的网络停顿?

Eri*_*nge 12 windows networking

我正在测试远程共享(在Windows服务器上)中是否存在文件.用于测试的基础函数是WinAPI的GetFileAttributes,发生的情况是该函数在各种情况下可能需要过多的时间(几十秒),例如当目标服务器处于脱机状态,存在权限或DNS问题时等.

但是,在我的特定情况下,它始终是LAN访问,因此如果文件在不到1秒的时间内无法访问,那么通常无法通过等待几十秒来访问...

是否有替代GetFileAttributes不会失速?(除了在一个线程中调用它并在超时后杀死线程,这似乎带来了自己的问题)

MSa*_*ers 7

问题不在于GetFileAttributes.它通常只使用一次对底层文件系统驱动程序的调用.这就是IO停滞不前.

不过,解决方案可能很简单.一秒钟后调用CancelSynchronousIo()(这显然需要第二个线程,因为你的第一个线程被卡在GetFileAttributes中).