ReadDirectoryChangesW() 报错的解决方法
来源:互联网 发布:带会员管理的网站源码 编辑:程序博客网 时间:2024/05/10 19:53
在做文件夹新增判断时用到了这个函数
error C2065: 'ReadDirectoryChangesW' : undeclared identifier
需要在stdafx.h文件中
在所有的 #include <xxx.h> 前面加入
#define _WIN32_WINNT 0x400
因为在winbase.h头文件中判断是否定义了WIN32_WINNT>=0x400
原理:
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 这段代码才会被编译器加入,因此需要定义
_WIN32_WINNT ,其值应大于等于0x0400(好像0x0400表示Windows2000,0x0500表示Windows XP),且需要
定义在包含windows.h(或winbase.h)的定义语句之前。
在c文件中
if(hDir ==INVALID_HANDLE_VALUE )
return false;
char buf[(sizeof(FILE_NOTIFY_INFORMATION)+MAX_PATH)*2];
FILE_NOTIFY_INFORMATION* pNotify=(FILE_NOTIFY_INFORMATION*)buf;
DWORD dwBytesReturned;
while(true)
{
//CHAR* FilePath=strDir.GetBuffer(0);
if(ReadDirectoryChangesW(hDir,
pNotify,
sizeof(buf),
false,//是否监控子目录
FILE_NOTIFY_CHANGE_FILE_NAME|
FILE_NOTIFY_CHANGE_DIR_NAME,
// FILE_NOTIFY_CHANGE_ATTRIBUTES|
// FILE_NOTIFY_CHANGE_SIZE|
// FILE_NOTIFY_CHANGE_LAST_WRITE|
// FILE_NOTIFY_CHANGE_LAST_ACCESS|
// FILE_NOTIFY_CHANGE_CREATION|
// FILE_NOTIFY_CHANGE_SECURITY,
&dwBytesReturned,
NULL,
NULL ) )
在ReadDirectoryChangesW右键查看定义,不会跳转到winbase.h
在 INVALID_HANDLE_VALUE上右键查看定义可以跳转到winbase.h
说明该函数只要有文件或文件夹改变事件就会收到通知,所以要加入PathIsDirectory() 函数判断下是文件夹还是文件事件
在win8中断点调试时候发现会出现程序崩溃,提示不能call某段代码。全速运行又ok。。。 实验中
- ReadDirectoryChangesW() 报错的解决方法
- ReadDirectoryChangesW的用法
- 报错的解决方法
- ReadDirectoryChangesW
- ReadDirectoryChangesW
- readdirectorychangesw 链接错误 undeclared identifier 解决方法
- readdirectorychangesw 链接错误 undeclared identifier 解决方法
- readdirectorychangesw 链接错误 undeclared identifier 解决方法
- 关于ReadDirectoryChangesW的三两事
- SeekBar的报错解决方法
- Oozie 报错的解决方法
- @Override报错的解决方法
- thymeleaf报错的解决方法
- maven的pom报错的解决方法
- AS的gradle报错的解决方法
- .NET : 使用ReadDirectoryChangesW监控文件夹的变化
- 关于ReadDirectoryChangesW这个函数的一些说明!
- ReadDirectoryChangesW实现文件监控的封装类
- 一天一点MFC
- 余弦距离、欧氏距离和杰卡德相似性度量的对比分析
- 子串和
- flask-sqlchemy使用
- python的条件和循环语句
- ReadDirectoryChangesW() 报错的解决方法
- Google codejam Qualification Round 2015 B 巧妙枚举结果 + 贪心
- ZZUOJ - 10377 - squee_spoon and his Cube III (DP)
- Android复合控件创建与使用Demo
- iosGCD的简单介绍2
- malloc函数使用
- 会话两小儿cookie和session
- Xcode中如何在即将启动的APP中设置断点调试
- Cunit的使用