首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateThread() // GetLastError()返回87

CreateThread() // GetLastError()返回87
EN

Stack Overflow用户
提问于 2011-08-26 09:27:05
回答 1查看 4.6K关注 0票数 1

下面是一个创建线程的简单程序。我希望我遗漏了一些明显的东西。仅供参考-我是Win32的新手。

为什么线程执行中的GetLastError()返回87 (ERROR_INVALID_PARAMETER)?

代码语言:javascript
复制
#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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-26 09:30:59

GetLastError()函数仅在返回"failed“结果的Win32 API函数之后立即调用时才返回有效结果。

在您的示例中,您将GetLastError()作为新线程中的第一件事来调用,这肯定不是在Win32 API函数调用之后立即进行的。

此外,每个线程都有自己的“最后一个错误”的副本,因此它们不会彼此冲突。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7199139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档