#include<Windows.h>
#include<iostream>
using namespace std;
DWORD WINAPI vMain(PVOID);
DWORD WINAPI vMainCopy(PVOID);int main(void)
{
DWORD dwThreadID;
HANDLE g_hThread;
g_hThread=CreateThread(NULL,0,vMain,NULL,CREATE_SUSPENDED,&dwThreadID);
if(GetLastError()==ERROR_SUCCESS)
{
SetThreadPriority(g_hThread,THREAD_PRIORITY_HIGHEST);
ResumeThread(g_hThread);
}
system("pause");
return 0;
}
DWORD WINAPI vMain(PVOID pParam)
{
DWORD dwThreadID;
HANDLE g_hThread;
g_hThread=CreateThread(NULL,0,vMainCopy,NULL,CREATE_SUSPENDED,&dwThreadID);
if(GetLastError()==ERROR_SUCCESS)
{
SetThreadPriority(g_hThread,THREAD_PRIORITY_HIGHEST);
ResumeThread(g_hThread);
}
return (DWORD)0;
}
DWORD WINAPI vMainCopy(PVOID pParam)
{
DWORD dwThreadID;
HANDLE g_hThread;
g_hThread=CreateThread(NULL,0,vMain,NULL,CREATE_SUSPENDED,&dwThreadID);
if(GetLastError()==ERROR_SUCCESS)
{
SetThreadPriority(g_hThread,THREAD_PRIORITY_HIGHEST);
ResumeThread(g_hThread);
}
return (DWORD)0;
}
我用调试器断点跟踪的时候,发现主线程创建的子线程执行vMain()时,vMain()函数执行CreateThread()时,我用GetLastError()获得“参数错误”的标志,然后CreateThread()也没创建线程,求指点错误
#include<iostream>
using namespace std;
DWORD WINAPI vMain(PVOID);
DWORD WINAPI vMainCopy(PVOID);int main(void)
{
DWORD dwThreadID;
HANDLE g_hThread;
g_hThread=CreateThread(NULL,0,vMain,NULL,CREATE_SUSPENDED,&dwThreadID);
if(GetLastError()==ERROR_SUCCESS)
{
SetThreadPriority(g_hThread,THREAD_PRIORITY_HIGHEST);
ResumeThread(g_hThread);
}
system("pause");
return 0;
}
DWORD WINAPI vMain(PVOID pParam)
{
DWORD dwThreadID;
HANDLE g_hThread;
g_hThread=CreateThread(NULL,0,vMainCopy,NULL,CREATE_SUSPENDED,&dwThreadID);
if(GetLastError()==ERROR_SUCCESS)
{
SetThreadPriority(g_hThread,THREAD_PRIORITY_HIGHEST);
ResumeThread(g_hThread);
}
return (DWORD)0;
}
DWORD WINAPI vMainCopy(PVOID pParam)
{
DWORD dwThreadID;
HANDLE g_hThread;
g_hThread=CreateThread(NULL,0,vMain,NULL,CREATE_SUSPENDED,&dwThreadID);
if(GetLastError()==ERROR_SUCCESS)
{
SetThreadPriority(g_hThread,THREAD_PRIORITY_HIGHEST);
ResumeThread(g_hThread);
}
return (DWORD)0;
}
我用调试器断点跟踪的时候,发现主线程创建的子线程执行vMain()时,vMain()函数执行CreateThread()时,我用GetLastError()获得“参数错误”的标志,然后CreateThread()也没创建线程,求指点错误
getlasterror是获取最后错误的标志 CreateThread成功还是失败首先看的是返回值 返回值已经表示成功了说明这个getlasterror的标志根本就不是你这个CreateThread的错误原因 又何必纠结?
// 如果你CreateThread成功了(根据返回值判断),这个时候GetLastError()得到了是另外函数执行失败设置的错误,不是CreateThread设置的
getlasterror是获取最后错误的标志 CreateThread成功还是失败首先看的是返回值 返回值已经表示成功了说明这个getlasterror的标志根本就不是你这个CreateThread的错误原因 又何必纠结?好吧,谢谢了