如何使用IOCTL_DISK_GROW_PARTITION
How to use IOCTL_DISK_GROW_PARTITION?
我正在尝试将分区缩小到上次使用的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, 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,
NULL,
0,
&dwBytesReturned,
NULL
)) {
int err = GetLastError();
printf("DeviceIoControl Failed, error : %d", err);;
}
我的硬盘有 3 个分区(C、D、E)。E: 驱动器实际上是空的。
[OP 的解决方案转换为下面的答案]
事实证明我的程序很好。 从以下位置更改访问权限后,它开始工作
GENERIC_ALL
自
GENERIC_READ | GENERIC_WRITE
相关文章:
- std::partition segfault issue
- 为什么我不能std :: partition this std :: unordered_map
- std::partition quick sort implementation
- Parallelizing std::nth_element and std::partition
- 从std::partition接收0xcccccccccc指针值意味着什么
- 正在CDH4中获取mapreduce.task.partition
- 有没有办法在我的程序继续时"grow"我的数组?
- “Grow"用于生成错误的动态数组的函数
- boost::interprocess::managed_shared_memory: Grow(): Memory R