// 目录监控多线程
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监控目录文件操作相关推荐

  1. python watchdog占用,python基于watchdog库全自动化监控目录文件

    楔子 有些时候我们需要对一个目录进行监控,检测其内部是否有文件的新增.删除.以及每个文件的内容是否发生变化,这个时候如果是你的话,你会选择怎么做呢? 显然也是一个比较麻烦的工作,倒不是说难,主要是比较 ...

  2. php 语言文件操作,php中目录文件操作详谈

    php中目录文件操作详谈 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,以下是小编整理的php中目录,文件操作详谈,欢迎来 ...

  3. Python监控目录文件夹,并使用SFTP上传目录及文件到linux服务器

    Python 扫描监控本地文件夹并进行超大文件上传 方案1:WebUploader大文件分块多线程并发上传 方案2:watchdog目录文件夹监控,paramiko STFP上传服务器 方案3:优化2 ...

  4. C语言目录文件操作补充

    本章节补充一些目录和文件操作的更多知识,因为这些知识涉及到时间操作,所以放在时间操作之后的章节中介绍. access库函数 access函数用于判断当前操作系统用户对文件或目录的存取权限. 包含头文件 ...

  5. 每天一个linux命令(目录文件操作):【转载】Linux文件类型与扩展名

    Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ...

  6. C# 路径 目录 文件操作办法

    1 using System; 2 using System.IO; 3 4 [, using System; 5 using System.Collections.Generic; 6 using ...

  7. P8-Windows与网络基础-Windows基本命令-目录文件操作(cd、dir、md、rd、move、copy、xcopy、del)

    该系列为"蜗牛学苑-网络安全"笔记,跟随课程加入自己见解,同时也为项目中碰到一些问题做了解答 大纲 目标 授课 前言 DOS命令的约定 1.目录和文件的应用操作 1.1 cd命令 ...

  8. Linux C编程--目录文件操作

    1.stat  获取文件属性        #include <sys/types.h>        #include <sys/stat.h>        #includ ...

  9. Windows与网络基础:Windows基本命令-目录文件操作

    概括:了解Windows,先从基础命令开始 目标:掌握Windows的系统文件及目录操作的一些命令,掌握Windows的网络相关的命令. 原因:排查一些网络,包括还有对文件的一些操作,需要用到命令会比 ...

最新文章

  1. java数据类型相互转换工具类
  2. Android音频焦点申请处理
  3. 【迁移学习(Transfer L)全面指南】Domain-Adversarial Training:基于对抗的迁移学习方法
  4. Android 短信模块分析(四) MMS之短信的发送与接收
  5. 在VS中如保快速查看DLL或exe的已导出的函数
  6. 第七章 控制PL/SQL错误
  7. 位操作——整数用位存储
  8. SQLErrorCodeSQLExceptionTranslator 使用以下的匹配规则
  9. mysql配置 | 快速上手Linux玩转典型应用
  10. 波音正在对737 Max进行软件升级 改善飞行员培训计划
  11. 用python实现星期的转换_在Python中将秒转换为周-天-小时-分钟-秒
  12. GridView中使用CheckBox
  13. WIN7无法调试安卓手机,ADB Interface显示黄色叹号
  14. 卡巴6kis最新激活码
  15. CSP认证-201809-1-卖菜
  16. 百度2017春招-买帽子
  17. Docker与本地网络连接配置
  18. 【软件工程】软件工程中应用的几种图辨析:系统流程图、数据流图、数据字典、实体联系图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图、PAD图、判定表
  19. 使用python实现自动爬取得物交易记录,商品信息进行数据分析
  20. 北京英语计算机统考,北京市2019年高考英语听力机考问答

热门文章

  1. ML之LoR:LoR之二分类之线性决策算法实现根据两课成绩分数~预测期末通过率(合格还是不合格)
  2. 【常用算法总结——最短路径四种方法】
  3. The Internals of PostgreSQL
  4. 20145205《Java程序设计》课程总结
  5. 0523-学习进度条
  6. duilib 自带树形控件的认识
  7. 使用 matlab 产生GK101任意波数据文件的方法
  8. Basic Level 1018. 锤子剪刀布 (20)
  9. C语言中类型使用的问题
  10. linux驱动篇之 driver_register 过程分析(二)bus_add_driver