Win32编程,怎么运行指定的cmd命令并保存命令输出结果呢?

从网上找了段代码,但是并没有获得结果。
目的是要运行”cmd.exe /c PECheck.exe 指定文件“这样的命令。

wsprintf(cmdline, TEXT("cmd.exe /c PECheck.exe %s"), szFilePath);

SECURITY_ATTRIBUTES sa;
HANDLE hRead, hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;

if (!CreatePipe(&hRead, &hWrite, &sa, 0)) {
    DWORD ret = GetLastError();
    return ret ? ret : -1;
}

STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(STARTUPINFO));

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, cmdline, NULL, NULL, TRUE, NULL,
    NULL, NULL, &si, &pi)) {
    DWORD ret = GetLastError();
    CloseHandle(hRead);
    CloseHandle(hWrite);
    return ret ? ret : -1;
}

CloseHandle(hWrite);
DWORD bytesRead;
while (true) {
    if (!ReadFile(hRead, buffer, 1024, &bytesRead, NULL)) break;
    Sleep(100);
}

DWORD exitCode = 0;
GetExitCodeProcess(pi.hProcess, &exitCode);

CloseHandle(hRead);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);

SetDlgItemText(hwnd, IDC_PACKTYPE, buffer);