createfile打开失败的问题??

shuirh 2010-05-30 07:04:12
#include <iostream.h>

#define _WIN32_WINNT 0x0500
#include <windows.h>


int main(int argc, char *argv[])
{

HANDLE hDirectory = CreateFile("D:\\", GENERIC_ALL, FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE, NULL
, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (INVALID_HANDLE_VALUE == hDirectory) //现在是在这里出了鬼,老是无效句柄
{
cout << "create file failed!" << endl;
DWORD dwErr = GetLastError();
return -1;
}

while (TRUE)
{
Sleep(1000);

FILE_NOTIFY_INFORMATION stFileNotifyInfo = {0};
DWORD dwBytesRet = 0;

BOOL bRet = ReadDirectoryChangesW(
hDirectory,
&stFileNotifyInfo,
sizeof (FILE_NOTIFY_INFORMATION),
TRUE,
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,
&dwBytesRet,
NULL,
NULL
);

if (bRet)
{
cout << "change occour!" << endl;
}
}

CloseHandle(hDirectory);

return 0;
}

我想写个文件监控程序,我首先要用createfile打开一个文件,得到handle,然后再ReadDirectoryChangesW,传递这个handle进去,但是我现在createfile打开directory死活成功不了,错误号老是3,无法识别路径,出了鬼了,请各位帮忙看看,谢谢了.
...全文
907 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
中才德创 2010-06-07
  • 打赏
  • 举报
回复
CreateFile("D:\\", 是一个文件吗?
Eleven 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chiyun1 的回复:]
msdn上:When opening a volume or floppy drive, the lpFileName string should be the following form: \\.\<x>:. Do not use a trailing backslash, which indicates the root directory of a drive. The following……
[/Quote]
就是这个,CreateFile(_T("\\\\.\\D:"),...);
l28791002 2010-06-07
  • 打赏
  • 举报
回复
文件名称呢,创建文件,需要加上文件名,不是目录名
sniper1319 2010-06-07
  • 打赏
  • 举报
回复
CreateFile的第一个参数需要带文件名的全路径吧
楼主是不是没包含文件名或文件夹名呀?
奈落之夜宵 2010-06-07
  • 打赏
  • 举报
回复
msdn上:When opening a volume or floppy drive, the lpFileName string should be the following form: \\.\<x>:. Do not use a trailing backslash, which indicates the root directory of a drive. The following table shows some examples of drive strings.
换成\\.\D:这样的格式试试
向立天 2010-06-07
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
向立天 2010-05-30
  • 打赏
  • 举报
回复
CreateFile("D:\\", GENERIC_ALL, FILE_SHARE_DELETE|FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
tiao618 2010-05-30
  • 打赏
  • 举报
回复
lz用GetLastError() 看看是什么错误

学windows编程要学会用这个函数
shuirh 2010-05-30
  • 打赏
  • 举报
回复
没有人知道吗???求助ing...

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧