gpt4 book ai didi

c++ - CreateThread()//GetLastError()返回87

转载 作者:行者123 更新时间:2023-11-30 02:08:10 29 4
gpt4 key购买 nike

下面是一个创建线程的简单程序。我希望我遗漏了一些明显的东西。仅供引用 - 我是 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;
}

最佳答案

GetLastError() 函数仅在返回“失败”结果的 Win32 API 函数立即调用时返回有效结果。

在您的情况下,您将调用 GetLastError() 作为新线程中的第一件事,这绝对不是在 Win32 API 函数调用之后立即进行的。

此外,每个线程都有自己的“最后一个错误”拷贝,因此它们不会相互干扰。

关于c++ - CreateThread()//GetLastError()返回87,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7199139/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com