DeviceIOControl 求救!!!!

poppylx 2010-07-09 09:02:33
最近要做一个分区调整的工具,在MSDN上找到可以用DeviceIoControl实现。
Control Code分别是:
FSCTL_SHRINK_VOLUME,FSCTL_EXTEND_VOLUME。(如果我没理解错的话)

但是经过几番尝试,始终无法成功调用,不知道是否有哪位兄弟有这方面的经验,能否给一些指导。
如果有源代码能参考一下也行,谢谢。
邮箱:robin_luo@hotmail.com

已经几天都没什么进展了,有点急,谢谢。
...全文
248 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
grdxyxy 2012-12-31
  • 打赏
  • 举报
回复
我也遇到这个问题了,U盘是正常的。硬盘就参数错误
littlemouse_0301 2012-05-29
  • 打赏
  • 举报
回复
lz的问题解决了吗?
FSCTL_MOVE_FILE
调用了吗?
捕鲸叉 2010-07-16
  • 打赏
  • 举报
回复
注意文件对象,ID名是否已定义。仅供参考
poppylx 2010-07-12
  • 打赏
  • 举报
回复
自己顶一下
china_west 2010-07-09
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
poppylx 2010-07-09
  • 打赏
  • 举报
回复
FSCTL_SHRINK_VOLUME部分代码如下:
************************************************************
LONGLONG size = 10000000;
DWORD dwRet;
HANDLE handle = CreateFile("\\\\.\\L:", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (handle == INVALID_HANDLE_VALUE)
{
cout << "Failed to open file. \t" << GetLastError() << endl;
system("pause");
return -1;
}

OVERLAPPED lapped;
SHRINK_VOLUME_INFORMATION svi;
svi.ShrinkRequestType = ShrinkPrepare;
svi.NewNumberOfSectors = size;
svi.Flags = 0;
if(!DeviceIoControl(handle, FSCTL_SHRINK_VOLUME, &svi, sizeof(svi), NULL, 0, &dwRet, NULL))
cout << "failed to ShrinkPrepare volume \t" << GetLastError() << endl;


SHRINK_VOLUME_INFORMATION svi1;
svi1.NewNumberOfSectors = 0;
svi1.Flags = 0;
svi1.ShrinkRequestType = ShrinkCommit;
if(!DeviceIoControl(handle, FSCTL_SHRINK_VOLUME, &svi1, sizeof(svi1), NULL, 0, &dwRet, NULL))
cout << "failed to ShrinkCommit volume \t" << GetLastError() << endl;

CloseHandle(handle);
**********************************************************************
调用后,在我的电脑中可以看到L盘的大小确实只有4G多。
但是奇怪的是,在磁盘管理器中,对话框上面部分(驱动器列表)看到L盘是4G多,不过在下面部分(用图形显示的)中看到L盘仍然是原来的大小。
在MSDN上说需要在调用IOCTL_DISK_GROW_PARTITION,但是不知道怎么给参数,调用时老说我参数错误。
大熊猫侯佩 2010-07-09
  • 打赏
  • 举报
回复
无法调用成功,返回什么错误码呢?
poppylx 2010-07-09
  • 打赏
  • 举报
回复
怎么没一个人理啊?
描述不清楚?
大家都没遇到过?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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