系统diskPart 操作命令函数

void CreateNewPartition(const int diskNumber,const ULONGLONG ullOffset, const ULONGLONG ullSize,const int partType, TCHAR tcVolume, const ULONGLONG ExtensionSize)
{


    CStringA strACmd;
    MyRunCmd mrc;
    MainFrame* pMainFrame = (MainFrame*)g_MainFrame;
    mrc.Run(TEXT("diskPart"));
    pMainFrame->SetCreateNewPartitionProc(1);
    strACmd.Format("select disk %d\n", diskNumber);
    mrc.WriteToPipe(strACmd.GetBuffer());
    mrc.ReadFromPipe("succes");

    pMainFrame->SetCreateNewPartitionProc(2);

    switch (partType)
    {
        case PARTITION_TYPE_EFI:
            strACmd.Format("CREATE PARTITION EFI size=%lld offset=%lld\n", ullSize, ullOffset);  //0EFI
            break;
        case PARTITION_TYPE_EXTENDED:
            strACmd.Format("CREATE PARTITION EXTENDED size=%lld offset=%lld\n", ExtensionSize, ullOffset); //1扩展分区
            break;
        case PARTITION_TYPE_LOGICAL:
            strACmd.Format("CREATE PARTITION LOGICAL size=%lld offset=%lld\n", ullSize, ullOffset); //2逻辑分区
            break;
        case PARTITION_TYPE_MSR:
            strACmd.Format("CREATE PARTITION MSR size=%lld offset=%lld\n", ullSize, ullOffset);  //3保留分区
            break;
        default:
            strACmd.Format("CREATE PARTITION PRIMARY size=%lld offset=%lld\n", ullSize, ullOffset);  //4主分区
    }
    mrc.WriteToPipe(strACmd.GetBuffer());
    mrc.ReadFromPipe("succes");

    pMainFrame->SetCreateNewPartitionProc(3);

    if (partType == 1)
    {
        strACmd.Format("CREATE PARTITION LOGICAL size=%lld\n", ullSize);   //如果是扩展进来再初始化一个逻辑分区
        mrc.WriteToPipe(strACmd.GetBuffer());
        mrc.ReadFromPipe("success");
    }

    strACmd.Format("format fs=ntfs quick\n");  //格式化
    mrc.WriteToPipe(strACmd.GetBuffer());
    mrc.ReadFromPipe("success");

    pMainFrame->SetCreateNewPartitionProc(4);

    strACmd.Format("assign letter=%C\n", tcVolume);  //设置盘符
    mrc.WriteToPipe(strACmd.GetBuffer());
    mrc.ReadFromPipe("success");

    pMainFrame->SetCreateNewPartitionProc(5);

    strACmd.Format("select volume %C:\n", tcVolume);  //选中盘符
    mrc.WriteToPipe(strACmd.GetBuffer());
    mrc.ReadFromPipe("success");

    pMainFrame->SetCreateNewPartitionProc(6);


    pMainFrame->SetCreateNewPartitionProc(7);

    strACmd.Format("RESCAN\n");    //刷新
    mrc.WriteToPipe(strACmd.GetBuffer());
    mrc.ReadFromPipe("success");
    pMainFrame->SetCreateNewPartitionProc(8);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值