如何使用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
    

要回复问题请先登录注册