【问题标题】:Windows error messagesWindows 错误消息
【发布时间】:2013-12-26 08:25:15
【问题描述】:

我正在开发一个使用 HIDAPI 进行 USB 通信的程序,似乎 API 函数 hid_error() 直接从 Windows 返回最后一条错误消息,而不是 API 本身生成的消息。我在哪里可以找到所有可能的错误消息的列表,以便我可以更准确地对错误做出反应?

【问题讨论】:

  • 常见的在 WinError.h 和 NtStatus.h SDK 头文件中声明。驱动程序可以添加自己的。
  • @HansPassant:另外,第一个google结果是相关的MSDN文档。
  • 此外,StackOverflow 是一个问题被编入索引的地方,由于这里的问题,谷歌产生了更好的结果,同样问题的人更快地得到答案....google:“Windows 错误消息 HID " 并查看第二个结果......任何需要错误消息的 HID 开发人员现在都有一个很好且直接的答案。
  • 除了每个谷歌用户的谷歌结果变化......当我搜索“windows错误消息”时,我没有得到答案......我得到与windows安装错误相关的网站......

标签: c++ windows usb hid hidapi


【解决方案1】:

我相信你在寻找除了Windows上的常规错误代码之外的以下两个功能,其文档似乎是Google上的第一个结果。

第一个函数将允许您根据system error codes 检查错误代码,并根据您的意愿(尽管您没有分享您需要任何自定义的原因),您可以显示自定义错误消息,或者您在可行的情况下,可以只使用第二个功能来保持它。当然,您也可以保留 hid_error 输出,因为它是等效的。

1) 获取错误代码本身。

GetLastError function

检索调用线程的最后一个错误代码值。最后一个错误代码是在每个线程的基础上维护的。多个线程不会覆盖彼此的最后一个错误代码。

2) 从错误码中取出字符串。

FormatMessage function

格式化消息字符串。该函数需要一个消息定义作为输入。消息定义可以来自传递给函数的缓冲区。它可以来自已加载模块中的消息表资源。或者调用者可以要求函数在系统的消息表资源中搜索消息定义。该函数根据消息标识符和语言标识符在消息表资源中查找消息定义。该函数将格式化的消息文本复制到输出缓冲区,并在请求时处理任何嵌入的插入序列。

例如,在Qt 应用程序中,这将是一种更自然的方式来处理您的自定义问题:

QString QtWin::errorStringFromHresult(HRESULT hresult)

如果消息未知,则返回指定的 hresult 错误 ID 的代码名称(通常是 WinAPI 宏的名称)或空字符串。

【讨论】:

  • 我不是在问如何得到最后一个错误。我在问如何获取所有可能错误的列表,以便我可以让我的程序对所有可能的消息做出反应,具体取决于它们的内容。
  • @mFeinstein:你真的读过答案吗?答案是提到如何在必要时自定义错误处理以及在不需要时如何进行回退。它提供了相关的 API 文档内联以及详细信息的链接。我很困惑你的问题是什么。
  • 我确实读过它,但你现在编辑了它,所以它包含了一个全新的段落,其中包含以前不存在的“msdn.microsoft.com/en-us/library/windows/desktop/…”。此外,如果您阅读 HIDAPI hid_error()(我发布的),您会看到该函数已经调用了您发布的函数 1 和 2。你说我的愿望没有发布是什么意思?!我说我想在编码之前获取错误进行分析,这样我就可以解释 hid_error() 返回的所有错误
  • 说真的,我给你发的每一篇文章都只是来帮助你,抱怨一切,请帮我一个忙,停止评论和回答我的问题。你只是让他们变得巨大,人们避免阅读和帮助。
  • 现在你编辑了你的第一条评论,删除了你指向我的冒犯部分......聪明......
【解决方案2】:

你可以看看System Error Codes

【讨论】:

  • 谢谢,我刚刚发现了这个链接里面的错误,所以我猜其他人也会在那里
  • 顺便说一句...ERROR_STACK_OVERFLOW 1001 (0x3E9) 递归太深;堆栈溢出。 --> 看看谁在里面 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2018-09-01
相关资源
最近更新 更多