社区
C++ 语言
帖子详情
DeviceIOControl 求救!!!!
poppylx
2010-07-09 09:02:33
最近要做一个分区调整的工具,在MSDN上找到可以用DeviceIoControl实现。
Control Code分别是:
FSCTL_SHRINK_VOLUME,FSCTL_EXTEND_VOLUME。(如果我没理解错的话)
但是经过几番尝试,始终无法成功调用,不知道是否有哪位兄弟有这方面的经验,能否给一些指导。
如果有源代码能参考一下也行,谢谢。
邮箱:robin_luo@hotmail.com
已经几天都没什么进展了,有点急,谢谢。
...全文
248
8
打赏
收藏
DeviceIOControl 求救!!!!
最近要做一个分区调整的工具,在MSDN上找到可以用DeviceIoControl实现。 Control Code分别是: FSCTL_SHRINK_VOLUME,FSCTL_EXTEND_VOLUME。(如果我没理解错的话) 但是经过几番尝试,始终无法成功调用,不知道是否有哪位兄弟有这方面的经验,能否给一些指导。 如果有源代码能参考一下也行,谢谢。 邮箱:robin_luo@hotmail.com 已经几天都没什么进展了,有点急,谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
怎么没一个人理啊?
描述不清楚?
大家都没遇到过?
Device
IoC
ontrol
解读
Device
IoC
ontrol
的技术应用,我刚从网上下来的,非常好的语言
实战
Device
IoC
ontrol
.rar_
device
ioc
ontrol
_driver.
IoC
ontrol
_pdiusbd12
驱动程序函数
DEVICE
IOC
ONTROL
的详细说明
Device
IoC
ontrol
详解及例程
硬件设备读写的基本操作
Device
IoC
ontrol
,入门级教程
易语言
Device
IoC
ontrol
取硬盘序列号
易语言
Device
IoC
ontrol
取硬盘序列号源码,
Device
IoC
ontrol
取硬盘序列号,倒序排列,
Device
IoC
ontrol
,CreateFileA,CloseHandle,GetLastError,LocalAlloc,LocalFree
Device
IoC
ontrol
取硬盘序列号.rar
Device
IoC
ontrol
取硬盘序列号.rar
C++ 语言
64,637
社区成员
250,559
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章