From: http://aaronaddis.blog.163.com/blog/static/1270893292010431101042517/

今天在编程中遇到了文件监控的东西,在使用readdirectorychangesw 函数是老是报未定义的错误,看了MSDN,包含了windows.h和Winbase.h 两个头文件,但是还是一样的错。查找之后发现了解决方案和原理:


添加  #define   _WIN32_WINNT   0x0500,且在windows.h头文件定义之上。
即:

#define   _WIN32_WINNT   0x0500

#include <windows.h>

原理:
1.ReadDirectoryChangesW函数定义在winbase.h头文件中,,通常windows下编程一般都包含windows.h文件,而windows.h中包含了winbase.h,所以不用再包含winbase.h
2.在winbase.h中ReadDirectoryChangesW原型定义如下:
#if(_WIN32_WINNT >= 0x0400)
WINBASEAPI
BOOL
WINAPI
ReadDirectoryChangesW(
    HANDLE hDirectory,
    LPVOID lpBuffer,
    DWORD nBufferLength,
    BOOL bWatchSubtree,
    DWORD dwNotifyFilter,
    LPDWORD lpBytesReturned,
    LPOVERLAPPED lpOverlapped,
    LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
    );
#endif /* _WIN32_WINNT >= 0x0400 */
可以看出,这是一个条件编译语句,只有定义了_WIN32_WINNT 这段代码才会被编译器加入,因此需要定义
_WIN32_WINNT ,其值应大于等于0x0400(好像0x0400表示Windows2000,0x0500表示Windows XP),且需要
定义在包含windows.h(或winbase.h)的定义语句之前

readdirectorychangesw 链接错误 undeclared identifier 解决方法相关推荐

  1. error C2065: : undeclared identifier 解决方法

    error C2065: 'IDD_VIDEONETDLG' : undeclared identifier 开发平台:VC++6.0 出现错误:error C2065: 'IDD_VIDEONETD ...

  2. MINIGUI常见错误集及解决方法

    MINIGUI常见错误集及解决方法 个人前言:其中错误1到16是直接转载的一篇博客,在移植MiniGUI过程中碰到的问题远远不止这些,我只是拿这16个先开个头,以后会将我自己在移植MiniGUI的过程 ...

  3. Git错误non-fast-forward的解决方法

    Git错误non-fast-forward的解决方法 秦时明月之君临天下 2019-05-02 10:58:39 34741 收藏 45 分类专栏: Git GitHub 文章标签: git 版权 目 ...

  4. 10038 mysql,关于MySql 10038错误的完美解决方法(三种)

    第一种方法: 第一步: 先看报错窗口 2003 can't connect to MySQL server on '127.0.0.1'(10038). 第二步: 原因是:远程3306端口未对外开放操 ...

  5. Partition Magic错误信息与解决方法

    Partition Magic错误信息与解决方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:of ...

  6. win10更改计算机名无法连接网络,Win10宽带无法连接提示调制解调器报告了一个错误原因及解决方法...

    Win10系统是目前最新的版本之一,目前笔记本的初装系统都是Win10,而我们如果没有路由器的情况下,我们则需要拨号才可以上网,在过程中遇到宽带无法连接的情况,系统提示"调制解调器(或其他连 ...

  7. SSL证书出现错误之后的解决方法

    SSL证书是一种数字证书,可为网站提供身份验证并启用加密链接,这些证书向客户端传达,证书颁发是Web服务主机向证书颁发机构证明了域名的所有权. 此身份验证过程非常类似于在通过邮件发送信件之前将信件密封 ...

  8. mysql errcode 13_Linux下MySQL的写文件时权限错误(Errcode: 13)解决方法

    在数据库中select * into outfile '/home/mysql/data.sql',mysql又提示错误:ERROR 1 (HY000): Can't create/write to  ...

  9. “adb不是内部或外部命令,也不是可执行的应用程序”错误原因及解决方法

    用SQLite时,可能会出现这样的错误. 原因可能是环境变量PATH没有配置或配置不正确.应该把adb.exe 所在目录加入到PATH环境变量.例如:C:\Program Files\android- ...

最新文章

  1. 5 亿微博数据疑泄露,Python 爬虫如何避免踩天坑?
  2. jsp/servlet与ajax实现简单局部日期时间更新
  3. 如何计算一年总共有多少周_美国计算机CS专业一年需要多少留学费用?
  4. Editplus PHP版
  5. Vim 上手指南【基础、中级】
  6. CSS自学笔记(16):CSS3 用户界面
  7. Confluence 6 PostgreSQL 创建数据库和数据库用户
  8. 使用jquery对特殊字符进行转义,防止js注入
  9. 实施 or 开发 ?
  10. python假设有一段英文、其中有单独的字母_峰终定律是诺贝尔奖获得者丹尼尔卡尼曼提出的。他发现,我们对一件事的整体评价,是全过程中所有元素体验的平均分。...
  11. python脚本自动运行失败_Linux中定时任务执行python脚本失败的解决方法
  12. 【三维路径规划】基于matlab无人机三维路径规划【含Matlab源码 1262期】
  13. oracle的备份恢复命令,Oracle RMAN的备份与恢复命令详解
  14. logback自定义日志配置
  15. 05|音频降噪概述(1)一传统降噪方法
  16. 关闭Typora拼写检查功能
  17. CCNA(七)思科路由器基本配置
  18. esp32➡遥控篇➡turtlesim➡mobot➡turtlebot3
  19. 两台电脑不在一个城市,如何使这两台电脑构成一个局域网?
  20. lumaQQ移植到Android之消息篇

热门文章

  1. 分享一个CSS3和jQuery实现的模糊显示效果 - 帮助你的访问用户更好的阅读内容
  2. 管道过滤模式 大数据_大数据管道配方
  3. 访问模型参数,初始化模型参数,共享模型参数方法
  4. leetcode1300. 转变数组后最接近目标值的数组和
  5. react 生命挂钩_如何在GraphQL API中使用React挂钩来管理状态
  6. flutter bloc_如何在Flutter中使用Streams,BLoC和SQLite
  7. 如何在Go中编写防弹代码:不会失败的服务器工作流程
  8. robot:根据条件主动判定用例失败或者通过
  9. 动态规划算法——最长上升子序列
  10. Linux 下 nginx反向代理与负载均衡