Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 手动触发FileSystemWatcher事件_C#_C++_Winapi_Filesystemwatcher - Fatal编程技术网

C# 手动触发FileSystemWatcher事件

C# 手动触发FileSystemWatcher事件,c#,c++,winapi,filesystemwatcher,C#,C++,Winapi,Filesystemwatcher,我正在开发一个文件系统驱动程序。 有点像共享文件夹或网络驱动器 因此,从特定计算机的角度来看,某些文件更改可能不是源于此计算机上的写入 据我所知,FSW正在拦截WinAPI调用以触发这些更改。但这里没有。 (如评论中所述,情况并非如此) 因此,如果有人正在监视文件系统事件(即有一个FileSystemWatcher侦听更改),他/她将不会收到任何通知 所以问题是:如何手动触发这些事件?有没有我遗漏的解决方案 > C,但C++溶液适合我。 ps:为了实现这一点,我目前正在触发一些驱动程序忽略的“

我正在开发一个文件系统驱动程序。 有点像共享文件夹或网络驱动器

因此,从特定计算机的角度来看,某些文件更改可能不是源于此计算机上的写入

据我所知,FSW正在拦截WinAPI调用以触发这些更改。但这里没有。 (如评论中所述,情况并非如此)

因此,如果有人正在监视文件系统事件(即有一个
FileSystemWatcher
侦听更改),他/她将不会收到任何通知

所以问题是:如何手动触发这些事件?有没有我遗漏的解决方案

> C,但C++溶液适合我。


ps:为了实现这一点,我目前正在触发一些驱动程序忽略的“假”写操作(我通过win API自调用我),但这种方法显然不干净,我遇到了一些缺点(其中包括:内核死锁…。

“FSW正在拦截win API”-我认为这个假设是无效的。@IInspectable是正确的。它不是“拦截”Windows API调用。它只是API函数的包装器。我相信(尽管您应该通过阅读文档来验证这一点),当应用程序调用
ReadDirectoryChanges
时,驱动程序将被发送
IRP\u MJ\u DIRECTORY\u CONTROL
请求,所以您应该只是对此作出响应。@IInspectable好的,谢谢,我误解了。但我的问题仍然有效,我想你们一般需要叫自己的司机。当处理已接收到带有主要功能代码IRP\U MJ\U目录控制的IRP的文件系统时,次要功能代码IRP\U MN\U NOTIFY\U CHANGE\U目录,调用
fsrtlnotifyfilterchangeditory
以创建一个notify结构来保存
IRP
,并将notify结构添加到当前卷的notify列表中。当目录发生更改时,文件系统调用以完成通知列表中挂起的
IRP\u MN\u NOTIFY\u change\u目录
请求。