问题描述
|
我正在尝试将分区缩小到最后使用的LCN。有人使用过此控制代码吗?
我在以下代码中每次都收到系统错误代码87:
HANDLE hdiskHandle = NULL;
disK_GROW_PARTITION dgp;
DWORD dwBytesReturned = 0;
dgp.PartitionNumber = 2;
dgp.BytesToGrow.QuadPart = -1;
hdiskHandle = CreateFile(_T(\"\\\\.\\PhysicalDrive0\"),GENERIC_ALL,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_ALWAYS,NULL);
if (hdiskHandle == INVALID_HANDLE_VALUE) {
int err = GetLastError();
printf(\"Unable to get handle on Volume,error : %d\",err);
}
if (!DeviceIoControl(
hdiskHandle,IOCTL_disK_GROW_PARTITION,&dgp,sizeof dgp,&dwBytesReturned,NULL
)) {
int err = GetLastError();
printf(\"DeviceIoControl Failed,err);;
}
我的硬盘驱动器有3个分区(C,D,E)。 E:驱动器实际上是空的。
解决方法
[OP的解决方案转换为下面的答案]
事实证明,我的程序很好。从更改访问权限后开始工作
GENERIC_ALL
至
GENERIC_READ | GENERIC_WRITE