在Windows 7中调用Process32First时出现ERROR_BAD_LENGTH

Pro*_*rst 6 c++ windows-7

我只是试图撤销Windows XP中的一些旧代码,它生成所有正在运行的进程的列表,但它在Windows 7上失败.在继续之前,这是代码:

#include <windows.h>
#include <tlhelp32.h>

int main()
{
    HANDLE hSnap, hTemp;
    PROCESSENTRY32 pe;

    hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if(Process32First(hSnap, &pe)) {
        do {
            ...
            }
        } while(Process32Next(hSnap, &pe));
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我检查了哪个功能失败,结果发现它是Process32First.GetLastError()返回24:"ERROR_BAD_LENGTH"我无法弄清楚问题是什么.有什么建议?

jgl*_*uie 9

来自MSDN:http://msdn.microsoft.com/en-us/library/ms684834(VS.85).aspx

调用应用程序必须将PROCESSENTRY32的dwSize成员设置为结构的大小(以字节为单位).

要检索有关同一快照中记录的其他进程的信息,请使用Process32Next函数.


编辑:您可能想要做这样的事情:

PROCESSENTRY32 pe = {0};
pe.dwSize = sizeof(PROCESSENTRY32);
Run Code Online (Sandbox Code Playgroud)