下面是一个创建线程的简单程序。我希望我遗漏了一些明显的东西。仅供参考-我是Win32的新手。
为什么线程执行中的GetLastError()返回87 (ERROR_INVALID_PARAMETER)?
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
long WINAPI Run();
int _tmain(int argc, _TCHAR* argv[])
{
DWORD id;
HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Run, NULL, 0, &id);
// hThread is not NULL
DWORD err = GetLastError(); // returns 0
int input;
std::cin >> input;
return 0;
}
long WINAPI Run()
{
DWORD err = GetLastError(); // returns 87
return 0;
}发布于 2011-08-26 09:30:59
GetLastError()函数仅在返回"failed“结果的Win32 API函数之后立即调用时才返回有效结果。
在您的示例中,您将GetLastError()作为新线程中的第一件事来调用,这肯定不是在Win32 API函数调用之后立即进行的。
此外,每个线程都有自己的“最后一个错误”的副本,因此它们不会彼此冲突。
https://stackoverflow.com/questions/7199139
复制相似问题