- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设 GetLastError(和变体)是每线程还是每进程是否正确?如果它是每个进程的问题在多线程应用程序中有些明显,因为无法保证在失败的调用和 GetLastError 之间没有进行其他 Win32 调用。有时 GetLastError 的值很重要。
例如,如果您正在使用 IO 完成端口,AcceptEx 将返回 FALSE(失败)。 WSAGetLastError(类似于 GetLastError)将返回 ERROR_IO_PENDING 以通知您它已挂起并且失败不是由于其他原因。问题是许多其他调用可能正在运行并覆盖此值。
这些调用是线程特定的还是进程特定的?如果特定于流程,那么您如何正确处理?
最佳答案
the docs对此绝对不含糊:
GetLastError Function
Retrieves the calling thread's last-error code value. The last-error code is maintained on a per-thread basis. Multiple threads do not overwrite each other's last-error code.
所以他们说了三遍(在一个段落中!):应该足够了,因为 Lewis Carroll说;-)。因此,无需回答诸如“但是如果它是按进程而不是按线程,那么……呢?”之类的假设。;-)。
关于c++ - 在多线程上下文中正确处理 GetLastError(和其他),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3426035/
处理 Application_Error 中的错误时,我应该使用这两个中的哪一个? 我正在为两者找到多个示例,但不清楚一个是否比另一个更好。是否存在只有一个会显示正确错误的情况? 另外,我怀疑这很重要
不久前,我为 Windows API 函数编写了一个简单的包装器类。我编写了一组单元测试来验证该类生成的结果与直接调用 API 相匹配。 最近我回去添加了关于跨不同线程使用包装器类的单元测试。我发现
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我有一个函数,它为每种情况返回不同的 DWORD 值,如果出现错误。所以我有以下定义: #define ERR_NO_DB_CONNECTION 0x90000 #define ERR_DB_N
德尔福 Xe。 在delphi帮助中:“...调用此函数通常会重置操作系统错误状态...” 如何将当前错误重置为 0? IE。 GetLastError=0 示例: Try // There is a
在调用像 ExtractShortPathName 这样的 Windows API 函数包装器后使用 GetLastError 时,我注意到 GetLastError 返回一个非零错误代码,无论是否对
我正在尝试编写一些函数来创建仅用于使用剪贴板的 Windows 消息窗口。我知道创建窗口失败,但是当我添加 GetLastError() 函数调用时,该函数永远不会返回到 Java。这使得调试变得很棘
这非常类似于: Turning GetLastError() into an exception 我还希望能够将 std::string 添加到错误中: class Win32Exception
下面是一个创建线程的简单程序。我希望我遗漏了一些明显的东西。仅供引用 - 我是 Win32 的新手。 为什么线程执行中的GetLastError()返回87(ERROR_INVALID_PARAMET
我有一个函数可以将 GetLastError 函数转换为字符串以在我的项目中使用。但在部署之前,我需要在示例程序中进行测试。当我测试它时,它没有给我任何错误,因为示例程序没有任何错误。 谁能帮我如何在
在此示例中,dwerror 是 10045L。但此代码返回 0x13d 值作为错误。如何获取格式消息?请看一下。 TCHAR lpMsgBuf[512]; if(!FormatMessage(
我有一个可以打开很多窗口的应用程序。有时,我得到 wglCreateContext() 返回 0 而 GetLastError() 返回 0xc007001f。 它只发生在 Intel 显卡上。 有人
我知道 GetLastError 会在发生错误时立即调用。我写了函数: void PrintErrorMsg() { DWORD errCode = GetLastError(); L
为什么 QT 应用程序中的最后一个错误始终为零? SetLastError(23); qDebug() << "LastError: " << GetLastError(); 预期输出:最后一个错误:
假设我正在使用 APC,其中过程和调用代码都使用 SetLastError 和 GetLastError。这会导致 GetLastError 产生不可预测的值。有什么办法可以解决这个问题吗? VOID
我有一个 Visual Studio 2008 C++ 项目,它在出现异常 错误时使用 Win32Exception 类。 Win32Exception 类如下所示: /// defines an e
假设 GetLastError(和变体)是每线程还是每进程是否正确?如果它是每个进程的问题在多线程应用程序中有些明显,因为无法保证在失败的调用和 GetLastError 之间没有进行其他 Win32
为什么是RegCreateKeyEx()返回 LONG ,而不是设置 DWORD错误代码来自 SetLastError() ? 转换它的 LONG 对我来说安全吗?将值返回给 DWORD然后用 Set
我如何在 php 中使用 getLastError() 检查我的保存方法是否正在插入到 mongo? 我按如下方式设置我的数据库: $this->databaseEngine = $app['mong
如果您有一个大型系统,它会自动显示一个漂亮的窗口来解释捕获的异常,那么能够将错误代码与消息一起显示(以供进一步调查)会很好。但是由于某些函数调用是针对设置错误代码的失败 Windows 函数,而有些是
我是一名优秀的程序员,十分优秀!