我觉得有一个明显的答案,但它一直在逃避我.我在C++中有一些遗留代码在尝试调用OpenThread()时会中断.我在Visual C++ 2008 Express Edition中运行它.程序首先获取调用线程的ThreadID,并尝试打开它,如下所示:
ThreadId threadId = IsThreaded()?thread_id ::: GetCurrentThreadId();
HANDLE threadHandle = OpenThread(THREAD_ALL_ACCESS,FALSE,threadId);
现在这是我不明白的:如果线程ID是当前线程的ID,是不是已经打开了?这可能是它返回NULL的原因吗?
对于任何反馈,我们都表示感谢.
我在C++中有一些遗留代码可以做一些我不理解的事情.我在运行Windows XP的计算机上运行Visual C++ 2008 Express Edition.
该代码使用了一些Windows函数:GetAdaptersInfo和GetAdaptersAddressess.我意识到这两个的最后一个参数是指向缓冲区大小的指针,因为它是in_out,所以可以在函数内进行更改.
我的问题是:这些函数是否应该改变缓冲区长度?
在我的代码中,每次调用这些函数时,缓冲区长度变量都被初始化为零,并且在调用函数之后,它仍然为0.