用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

格式化

2013-04-10 作者: feihe027举报

[c++]代码库

UINT CFormatDisk::CMDFormat()
{
    // 格式化命令行
    m_strCMD.Format(_T("format.com %c:/fs:FAT32/q/v:%s/y"), m_cLetter, m_strLable);
    SECURITY_ATTRIBUTES sa;
    HANDLE hRead,hWrite;
 
    //创建管道
    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.lpSecurityDescriptor = NULL;
    sa.bInheritHandle = TRUE;
    if (!CreatePipe(&hRead,&hWrite,&sa,0))
    {
        return -1;
    }
 
    //创建子进程
    STARTUPINFO si;
    PROCESS_INFORMATION pi = {0};
    si.cb = sizeof(STARTUPINFO);
    GetStartupInfo(&si);
    si.hStdError = hWrite;
    si.hStdOutput = hWrite;
    si.wShowWindow = SW_HIDE;
    si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
    if (!CreateProcess(NULL, m_strCMD.GetBuffer(), NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi))
    {          
        return -1;
    }
    m_strCMD.ReleaseBuffer();
 
    //关闭写管道句柄
    CloseHandle(hWrite);
 
    UINT uPos = 0;
    CString strInfo;
 
 
    //读取管道数据直到子程序结束
    char buffer[4097] = {0};
    DWORD dwReadSize = 0;
//  while(true)
//  {
//      if((ReadFile(hRead,buffer,4096,&dwReadSize,NULL) == NULL) || (dwReadSize == 0))
//          break;
//  }
 
    //获得程序返回值
    DWORD   dwExitCode = 0;
    GetExitCodeProcess(pi.hProcess, &dwExitCode);
 
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
 
    return dwExitCode;
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...