下面是一个创建线程的简单程序。我希望我遗漏了一些明显的东西。仅供参考 - 我是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;
}
答案 0 :(得分:4)
GetLastError()
函数仅在返回“失败”结果的Win32 API函数后立即调用时才返回有效结果。
在你的情况下,你正在调用GetLastError()
作为新线程中的第一件事,这绝对不是在Win32 API函数调用之后的。
此外,每个帖子都有自己的“上一个错误”副本,因此它们不会互相踩踏。