中止同步ReadDirectoryChangesW

时间:2013-11-20 12:39:11

标签: winapi

我在一个帖子中使用ReadDirectoryChangesW的同步味道。一切都运作良好。

但是除了从主线程调用TerminateThread之外,我无法终止该线程,因为如果受监视目录中没有活动,ReadDirectoryChangesW将永远等待。

TerminateThread的解决方案有效,但这有点脏。

另一种解决方案是在受监控目录中创建一个虚拟文件,该文件将解锁ReadDirectoryChangesW,但这只是另一个黑客攻击。

那么有没有办法正常取消阻止/中止ReadDirectoryChangesW

2 个答案:

答案 0 :(得分:1)

您可以切换到使用完成例程并在调用ReadDirectoryChangesW()之后立即调用等待函数,该函数会使您进入可警告的等待状态,并等待您用于中止等待的事件。 ..

答案 1 :(得分:1)

如果使用FILE_SYNCHRONOUS_IO_ALERT打开句柄,则可以使用未记录的NtAlertThread发送信号以停止等待。