我在win7上写了个application.是对SD卡进行操作的!
往里面写返回的error code 是5
1.我已经调用了DeviceIoControl(hDevice,FSCTL_LOCK_VOLUME,NULL,0,NULL,0,&dwOutBytes,()NULL)
2.uAC也已经拉到最低(关了)
但仍然是error code 5
请问怎么解决
往里面写返回的error code 是5
1.我已经调用了DeviceIoControl(hDevice,FSCTL_LOCK_VOLUME,NULL,0,NULL,0,&dwOutBytes,()NULL)
2.uAC也已经拉到最低(关了)
但仍然是error code 5
请问怎么解决
解决方案 »
- MSN登陆时弹出的 今日焦点 如何实现?
- 求助:unresolved external symbol __imp__fun
- come on,help!!!
- 什么叫“已经定义了UNICODE”?
- 关闭对话框出现错误,等待~~
- error C2065: “TypeInfoHelper” : 未声明的标识符 这是什么东西,我从来没用过TypeInfoHelper啊
- 如何通过程序模拟键盘控制某一软件的运行
- 'HidD_GetHidGuid': identifier not found
- 内存映射文件 出现乱码
- 请问,如何检测光驱内是否有盘,及是否是指定的光盘(比如用卷标确定)?
- MFC雷达界面数据显示
- 雷达扫描
权限问题
在MSDN上说是LOCK or DISMOUNT,我试过都不行!
BOOL SetDriveMark(DWORD PhysicalNumber, LARGE_INTEGER TotalSector,UCHAR *buf)
{
HANDLE hDevice; // handle to the drive to be examined
DWORD junk; // discard results
TCHAR PhycialDriver[256]={0};
LARGE_INTEGER DistanceToMove, NewPos;
DWORD dwOutBytes;
wsprintf(PhycialDriver, TEXT("\\\\.\\PhysicalDrive%d"), PhysicalNumber);
hDevice = CreateFile(PhycialDriver, // drive to open
GENERIC_READ | GENERIC_WRITE, // access to the drive
FILE_SHARE_READ | // share mode
FILE_SHARE_WRITE,
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
{
return (FALSE);
} DistanceToMove.QuadPart = (TotalSector.QuadPart-1)*512;
if(SetFilePointerEx(hDevice, DistanceToMove, &NewPos, FILE_BEGIN) == 0)
{
odprintf("FilePosition fail %d\n", GetLastError());
CloseHandle(hDevice);
return (FALSE);
}
odprintf("FilePosition new %I64d\n", NewPos);
if(DeviceIoControl(hDevice,FSCTL_DISMOUNT_VOLUME,NULL,0,NULL,0,&dwOutBytes,(LPOVERLAPPED)NULL))
{
odprintf("ok");
} if(WriteFile(hDevice, buf, 512, &junk, NULL) == 0)
{
odprintf("WriteFile fail %d\n", GetLastError());
CloseHandle(hDevice);
return (FALSE);
} CloseHandle(hDevice); return TRUE;
}上面代码执行的结果是:
ok
WriteFile fail 5
很茫然不知所错!
MSDN论坛上也有人遇到相同的问题!应该是有办法来解决这个问题的.HxD就可以来操作磁盘的sector!不知道怎么来做?!!!!!!!!!!!!!!!!
wsprintf(PhycialDriver, TEXT("\\\\.\\PhysicalDrive%d"), PhysicalNumber);对吗?
if(DeviceIoControl(hDevice,FSCTL_DISMOUNT_VOLUME,NULL,0,NULL,0,&dwOutBytes,(LPOVERLAPPED)NULL))
{
odprintf("ok");
}
执行结果有打印ok!
锁定我也试过!FSCTL_LOCK_VOLUME.这么用应该是对的吧?~!我也试过将两者结合使用,但依然没效果!