Windows下createfile函数用GENERIC_READ访问模式打不开磁盘
Posted piaoxuewaiwai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows下createfile函数用GENERIC_READ访问模式打不开磁盘相关的知识,希望对你有一定的参考价值。
这两天做毕设,快气死了!想读写磁盘扇区,我就百度了,都是这样写的:
HANDLE hDevice = CreateFile(TEXT("\\\\.\\PhysicalDrive1", // drive,一般physicaldrive0是主磁盘,我不干,整死了咋整,虚拟机又卡 GENERIC_REAF, // no access to the drive FILE_SHARE_READ ,// share mode, NULL, // default security attributes OPEN_EXISTING, // disposition 0, // file attributes NULL); // do not copy file attributes if (hDevice == INVALID_HANDLE_VALUE) // cannot open the drive {
MessageBox("error"); return (FALSE); }
....................... CloseHandle(hDevice);
别人都用createfile函数打开设备,获得磁盘返回的句柄之后,将句柄作为deviceIOcontrol函数的参数传递给磁盘扇区吧,我就不行,死活不行,win7下也不行。只要我用GENERIC_READ 或者是 GENERIC_WRITE,只会弹出error。各种百度都没找到,但是别人家的分区软件确实在我的电脑上运行。
最后我终于看到,把GENERIC_READ换成FILE_READ_ATTRIBUTES之后终于可以了,我的句柄获得了,哈哈哈!开心!
以上是关于Windows下createfile函数用GENERIC_READ访问模式打不开磁盘的主要内容,如果未能解决你的问题,请参考以下文章
win32 api CreateFile 和 WriteFile 问题
CreateFile() 在 Windows XP 中工作,但在 Windows 7 中失败,返回句柄无效
vb60编程中,如何用API函数中的createfile()创建一个文件?