ReadDirectoryChangesW监控目录文件操作
// 目录监控多线程
UINT MonitorFileThreadProc(LPVOID lpVoid)
{char *pszDirectory = (char *)lpVoid;// 打开目录, 获取文件句柄HANDLE hDirectory = ::CreateFile(pszDirectory, FILE_LIST_DIRECTORY,FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS, NULL);if (INVALID_HANDLE_VALUE == hDirectory){ShowError("CreateFile");return 1;}char szTemp[MAX_PATH] = { 0 };BOOL bRet = FALSE;DWORD dwRet = 0;DWORD dwBufferSize = 2048;// 申请一个足够大的缓冲区 BYTE *pBuf = new BYTE[dwBufferSize];if (NULL == pBuf){ShowError("new");return 2;}FILE_NOTIFY_INFORMATION *pFileNotifyInfo = (FILE_NOTIFY_INFORMATION *)pBuf;// 开始循环设置监控do{::RtlZeroMemory(pFileNotifyInfo, dwBufferSize);// 设置监控目录bRet = ::ReadDirectoryChangesW(hDirectory,pFileNotifyInfo,dwBufferSize,TRUE,FILE_NOTIFY_CHANGE_FILE_NAME | // 修改文件名FILE_NOTIFY_CHANGE_ATTRIBUTES | // 修改文件属性FILE_NOTIFY_CHANGE_LAST_WRITE, // 最后一次写入&dwRet,NULL,NULL);if (FALSE == bRet){ShowError("ReadDirectoryChangesW");break;}// 将宽字符转换成窄字符W2C((wchar_t *)(&pFileNotifyInfo->FileName), pFileNotifyInfo->FileNameLength, szTemp, MAX_PATH);// 判断操作类型并显示switch (pFileNotifyInfo->Action){case FILE_ACTION_REMOVED:printf("[File Removed Action] %s\n", szTemp);break;case FILE_ACTION_ADDED:{// 新增文件printf("[File Added Action] %s\n", szTemp);break;}case FILE_ACTION_MODIFIED:printf("[File Modified Action] %s\n", szTemp);break;case FILE_ACTION_RENAMED_OLD_NAME:printf("[File Rename Action] %s\n", szTemp);break;case FILE_ACTION_RENAMED_NEW_NAME:printf("[File Rename Action] %s\n", szTemp);break;default:{break;}}} while (bRet);// 关闭句柄, 释放内存::CloseHandle(hDirectory);delete[] pBuf;pBuf = NULL;return 0;
}
ReadDirectoryChangesW监控目录文件操作相关推荐
- python watchdog占用,python基于watchdog库全自动化监控目录文件
楔子 有些时候我们需要对一个目录进行监控,检测其内部是否有文件的新增.删除.以及每个文件的内容是否发生变化,这个时候如果是你的话,你会选择怎么做呢? 显然也是一个比较麻烦的工作,倒不是说难,主要是比较 ...
- php 语言文件操作,php中目录文件操作详谈
php中目录文件操作详谈 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,以下是小编整理的php中目录,文件操作详谈,欢迎来 ...
- Python监控目录文件夹,并使用SFTP上传目录及文件到linux服务器
Python 扫描监控本地文件夹并进行超大文件上传 方案1:WebUploader大文件分块多线程并发上传 方案2:watchdog目录文件夹监控,paramiko STFP上传服务器 方案3:优化2 ...
- C语言目录文件操作补充
本章节补充一些目录和文件操作的更多知识,因为这些知识涉及到时间操作,所以放在时间操作之后的章节中介绍. access库函数 access函数用于判断当前操作系统用户对文件或目录的存取权限. 包含头文件 ...
- 每天一个linux命令(目录文件操作):【转载】Linux文件类型与扩展名
Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...
- C# 路径 目录 文件操作办法
1 using System; 2 using System.IO; 3 4 [, using System; 5 using System.Collections.Generic; 6 using ...
- P8-Windows与网络基础-Windows基本命令-目录文件操作(cd、dir、md、rd、move、copy、xcopy、del)
该系列为"蜗牛学苑-网络安全"笔记,跟随课程加入自己见解,同时也为项目中碰到一些问题做了解答 大纲 目标 授课 前言 DOS命令的约定 1.目录和文件的应用操作 1.1 cd命令 ...
- Linux C编程--目录文件操作
1.stat 获取文件属性 #include <sys/types.h> #include <sys/stat.h> #includ ...
- Windows与网络基础:Windows基本命令-目录文件操作
概括:了解Windows,先从基础命令开始 目标:掌握Windows的系统文件及目录操作的一些命令,掌握Windows的网络相关的命令. 原因:排查一些网络,包括还有对文件的一些操作,需要用到命令会比 ...
最新文章
- java数据类型相互转换工具类
- Android音频焦点申请处理
- 【迁移学习(Transfer L)全面指南】Domain-Adversarial Training:基于对抗的迁移学习方法
- Android 短信模块分析(四) MMS之短信的发送与接收
- 在VS中如保快速查看DLL或exe的已导出的函数
- 第七章 控制PL/SQL错误
- 位操作——整数用位存储
- SQLErrorCodeSQLExceptionTranslator 使用以下的匹配规则
- mysql配置 | 快速上手Linux玩转典型应用
- 波音正在对737 Max进行软件升级 改善飞行员培训计划
- 用python实现星期的转换_在Python中将秒转换为周-天-小时-分钟-秒
- GridView中使用CheckBox
- WIN7无法调试安卓手机,ADB Interface显示黄色叹号
- 卡巴6kis最新激活码
- CSP认证-201809-1-卖菜
- 百度2017春招-买帽子
- Docker与本地网络连接配置
- 【软件工程】软件工程中应用的几种图辨析:系统流程图、数据流图、数据字典、实体联系图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图、PAD图、判定表
- 使用python实现自动爬取得物交易记录,商品信息进行数据分析
- 北京英语计算机统考,北京市2019年高考英语听力机考问答
热门文章
- ML之LoR:LoR之二分类之线性决策算法实现根据两课成绩分数~预测期末通过率(合格还是不合格)
- 【常用算法总结——最短路径四种方法】
- The Internals of PostgreSQL
- 20145205《Java程序设计》课程总结
- 0523-学习进度条
- duilib 自带树形控件的认识
- 使用 matlab 产生GK101任意波数据文件的方法
- Basic Level 1018. 锤子剪刀布 (20)
- C语言中类型使用的问题
- linux驱动篇之 driver_register 过程分析(二)bus_add_driver