【问题标题】:GetThreadContext() returns error 18 - There are no more filesGetThreadContext() 返回错误 18 - 没有更多文件
【发布时间】:2011-06-21 13:47:22
【问题描述】:

GetThreadContext() 返回错误 18 - 没有更多文件。我到处搜索,找不到错误的解释。有人可以帮我澄清一下吗?

非常感谢。

【问题讨论】:

  • 你有运行 Kaspersky AV 吗?
  • 那么,你传递给函数的是什么?
  • 这与它有什么关系:stackoverflow.com/questions/4696543/…。您是否遵循文档并首先暂停线程并确保您拥有线程上的 THREAD_GET_CONTEXT 和 THREAD_QUERY_INFORMATION(如果需要)访问权限?
  • 首先验证它是否返回 FALSE,如果返回 TRUE,您将不会从 GetLastError() 中获得有效的错误代码。
  • 您在此处显示的输出与代码不匹配。 (代码打印[*],但您的输出只是[]。)此外,您的代码将在调用OpenThread总是打印错误代码,但文本会暗示它实际上是关于@ 987654325@。 GetLastError 的返回值仅在文档说明有效时才有效;如果 API 函数成功,它并没有说它是有效的。操作系统允许推测性地设置错误码,所以在关注错误码之前一定要检查API返回值。

标签: c++ python winapi ctypes


【解决方案1】:

Rob KennedyHans Passant在下面回答了我的问题。我想在这里引用 Rob 和 Hans 作为答案:

Hans Passant 首先验证它 [GetThreadContext()] 返回 FALSE,如果它 [GetThreadContext()] 返回 TRUE,您将不会从 GetLastError() 获得有效的错误代码。

Rob Kennedy GetLastError 的返回值仅在文档说明有效时才有效;如果 API 函数成功,它并没有说它是有效的。操作系统允许推测性地设置错误码,所以在注意错误码之前一定要检查API返回值

简单的if handle == False print error为我修复了它。

感谢大家的意见。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-18
    • 2013-07-04
    • 2013-08-14
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多