Windows提供的对文件和目录监控的系统服务API
2017-08-25 15:41
330 查看
指定的一个目录进行监控,当该目录中有文件发生改变,并通知处理。 Windows提供了对文件和目录监控的系统服务,并且为应用程序提供了两个API函数,它们分别是:FindFirstChangeNotification和ReadDirectoryChangesW。其中FindFirstChangeNotification函数只能监控到某一目录下有文件发生改变,而不能监控到具体是哪一文件发生改变。ReadDirectoryChangesW
能监控目录下某一文件发生改变。
利用ReadDirectoryChangesW函数实现对一个目录进行监控的。具体的做法是:首先使用CreateFile获取要监控目录的句柄;然后在一个判断循环里面调用ReadDirectoryChangesW,并且把自己分配的用来存放目录变化通知的内存首地址、内存长度、目录句柄传给该函数。用户代码在该函数的调用中进行同步等待。当目录中有文件发生改变,控制函数把目录变化通知存放在指定的内存区域内,并把发生改变的文件名、文件所在目录和改变通知处理。
该函数定义为:
BOOL WINAPI ReadDirectoryChangesW(
HANDLE hDirectory, // 对目录进行监视的句柄
LPVOID lpBuffer, // 一个指向DWORD类型的缓冲区,其中可以将获取的数据结果将其返回。
DWORD nBufferLength, // 指lpBuffer的缓冲区的大小值,以字节为单位。
BOOL bWatchSubtree, // 监视目录. 一般选择 TRUE
DWORD dwNotifyFilter, // 对文件过滤的方式和标准
LPDWORD lpBytesReturned, // 将接收的字节数转入lpBuffer参数
LPOVERLAPPED lpOverlapped, //
一般选择 NULL
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // 一般选择 NULL
);
能监控目录下某一文件发生改变。
利用ReadDirectoryChangesW函数实现对一个目录进行监控的。具体的做法是:首先使用CreateFile获取要监控目录的句柄;然后在一个判断循环里面调用ReadDirectoryChangesW,并且把自己分配的用来存放目录变化通知的内存首地址、内存长度、目录句柄传给该函数。用户代码在该函数的调用中进行同步等待。当目录中有文件发生改变,控制函数把目录变化通知存放在指定的内存区域内,并把发生改变的文件名、文件所在目录和改变通知处理。
该函数定义为:
BOOL WINAPI ReadDirectoryChangesW(
HANDLE hDirectory, // 对目录进行监视的句柄
LPVOID lpBuffer, // 一个指向DWORD类型的缓冲区,其中可以将获取的数据结果将其返回。
DWORD nBufferLength, // 指lpBuffer的缓冲区的大小值,以字节为单位。
BOOL bWatchSubtree, // 监视目录. 一般选择 TRUE
DWORD dwNotifyFilter, // 对文件过滤的方式和标准
LPDWORD lpBytesReturned, // 将接收的字节数转入lpBuffer参数
LPOVERLAPPED lpOverlapped, //
一般选择 NULL
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // 一般选择 NULL
);
相关文章推荐
- 使用windows服务和.NET FileSystemWatcher对象来监控磁盘文件目录的改变
- 使用windows服务和.NET FileSystemWatcher对象来监控磁盘文件目录的改变
- 认证鉴权与API权限控制在微服务架构中的设计与实现 参考文件目录
- Windows命令行获取当前bat文件所在目录,添加永久系统环境变量的方法
- 用C#开发Windows服务监控系统使用
- 用命令或批处理命令一次删除windows系统一个目录下的所有文件
- windows系统:oracle 10g的下载、安装、配置 (提供绝版安装文件下载)
- Windows系统中监控文件复制操作的几种方式
- windows下python监控系统服务
- Windows命令行获取当前bat文件所在目录,添加永久系统环境变量的方法
- 监控文件系统用得到的API
- 为设备服务的文件系统sysfs--文件目录的创建
- 利用Windows Service,定时监控某一目录,发现新文件后自动上传到指定web服务器
- Windows添加系统服务与glassfish bat启动文件
- Windows 文件、目录操作编程常用API
- windows 监控文件目录
- 转:将可执行文件注册成系统windows服务
- 安装卸载Windows系统服务服务,修改服务里文件执行路径
- windows 无法启动 windows update 服务 (位于本地计算机上) 错误2:系统找不到指定文件
- 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\41c191fd\ff9345c5\App_Web_login.cshtml.65793277