问题标签 [getlasterror]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
455 浏览

c++ - 处理 WinAPI 错误返回值

我目前正在学习与 WinAPI 相关的 C++。我正在努力为 WinAPI 函数提出有意义的错误处理策略。

问题:

大多数 WinAPI 函数在出现错误时都可以返回 0,但在许多情况下,我在 MSDN 上看不到任何关于什么可能导致此类错误以及如何解决/解决它的信息。举GetCursorPos个例子:

如果成功则返回非零,否则返回零。要获取扩展的错误信息,请调用GetLastError

(...)

调用GetCursorPos时,输入桌面必须是当前桌面。调用OpenInputDesktop判断当前桌面是否为输入桌面。如果不是,请使用返回的HDESK调用SetThreadDesktop桌面。

  • 如果我遵循GetLastError的路线的路线,我会对该特定函数可能返回哪些错误感兴趣,以便我可以检查可以对它们做些什么。但是错误代码在这个MSDN 页面上被组织成 10 组,仅基于错误编号,而没有任何说明在哪个组中列出了哪些错误。
  • 当我试图发现OpenInputDesktop将如何如何帮助我使我的代码更加防弹时,我再次发现:

如果函数失败,则返回值为NULL。要获取扩展错误信息,请调用GetLastError

总结一下: WinAPI中的几乎每个函数都可以返回确定错误发生的值,并且我可以在错误发生时获取有关错误的信息GetLastError。但是没有任何关于我可以预期什么样的错误以及解决这些错误的步骤的信息。

例子很多,GetWindowRect也被广泛使用和MSDN提供的信息与GetCursorPos.

问题:

请问有没有关于如何处理 WinAPI 函数错误返回值的标准,这些标准将保留错误处理,而不是仅仅显示一个消息框并退出应用程序?谢谢!

0 投票
1 回答
2088 浏览

c++ - GetLastError 在调用 WinHttpOpenRequest 后返回 6

我不确定这是否是缺乏对 msdn 的了解。我有以下代码:

我为此有一个类,并且正在执行以下行://打开请求-此时未连接

所以基本上当我运行我的软件时,它会返回这里,因为调用 winhttpopenrequest 时 !hrequest 是空的。我添加了 getlasterror 来看看为什么会这样,但我得到的唯一输出是:

然后我阅读了 winhttp 的 msdn,我可以在这里看到函数返回的错误:https ://msdn.microsoft.com/en-us/library/windows/desktop/aa384099(v=vs.85).aspx但是这个神秘的错误 6 对我来说毫无意义。

有关查看为什么句柄无效的任何帮助?

完整的课程代码:

0 投票
1 回答
411 浏览

c++ - 根据 GetLastError 直接写磁盘导致错误代码 5

我正在尝试在 Windows 中直接写入 U 盘。我使用该CreateFile函数创建磁盘句柄并使用该WriteFile函数尝试写入文件。WriteFile 函数失败,状态码为 5(根据 GetLastError)。我尝试使用 锁定磁盘卷FSCTL_DISMOUNT_VOLUME,但该卷被隐藏了,所以我无法获取它的卷号。

代码:

0 投票
1 回答
114 浏览

winapi - 为什么 Microsoft 错误消息使用“令牌”一词?

我故意为调用设置了错误的路径,CreateDirectory以便执行我的异常处理代码:

微软错误文本

我不确定这是否离题,但您可能对此有更多经验。为什么是错误文本:

试图引用不存在的令牌。

为什么他们使用单词令牌而不是文件文件夹

如果题外话,我会关闭这个问题。

的返回值为GetLastError123

根据这里

ERROR_INVALID_NAME

123 (0x7B)

文件名、目录名或卷标语法不正确。

现在这个消息是有道理的。那么为什么我的 Windows 10 显示另一条消息?

0 投票
2 回答
62 浏览

c - 如何在C中将数据添加到txt文件?

在 C 程序中,我想将数据附加到文本文件中。像这样使用 fopen 函数:

GetLastError 有时会返回 (ok),但文件会被覆盖而不是添加。

像这样使用 fopen 函数:

添加了数据,但 GetLastError 给出错误 183。程序在这两种情况下都能正常工作,但我在 postgre 扩展中使用此代码,它崩溃并由于未知原因失去连接服务器。如何正确地将数据添加到文件中而不会出错?