|
|
1
6
Microsoft没有给出API可能返回的所有错误代码的列表,原因很简单,该列表可能会随着时间的推移和Windows的各种实现、安装的驱动程序或简单的疏忽而改变(API通常返回由您调用的API中调用的其他API引起的错误)。 有时,文档会调用特定的错误,这些错误对于该API的用户来说特别重要,但一般来说,它们不会有一个完整的错误列表。他们也不应该这样做,这是不幸的,但却是生活中的事实。
然而,覆盖所有场景(包含一个全面的错误代码列表)或防止将来的更改实际上是一个不可能的目标。考虑微软可能需要如何管理Win32中所有拥有的错误代码的记录:
这些文件反映了以下内容:
现在,当API v2发布时,
然而,这个家伙将新的错误添加到
实际上,这不一定是一个很好的例子,因为如果错误代码是API契约的一部分
所以这里有另一个场景:API有一个
|
|
|
2
3
这里有一张 Windows error codes here 但它没有指定每个API调用的错误代码。尽管如此,MSDN站点确实提供了许多关于大多数API方法的有用信息,包括它们可能返回的错误代码。 FormatMessage 函数可用于将错误转换为正确的错误消息,同时考虑当前的Windows语言。通常,显示这样的错误消息就足够了。您只想为可能出现的错误添加逻辑,即使这样,您也只想显示一条错误消息。 当读到 CopyFileEx ,除了关于获取GetLastError()调用的部分之外,您还将阅读以下内容:
基本上,这些都是您通常可以预期的错误。所有其他操作只会向用户发送一条错误消息。 (我讨厌这个网站翻译 |
|
|
3
1
CopyFileEx最终由一系列设备驱动程序来处理,有些是由Microsoft编写的,有些可能不是,设备驱动程序返回一个任意的NTSTATUS代码,该代码被转换为Win32错误代码。由于它可以是返回此NTSTATUS的自定义驱动程序,Microsoft无法向您保证任何有关它的信息。 CopyFileEx给您一个“简短”列表的唯一方法是,如果CopyFileEx已将详细的错误代码更改为一些简单的错误代码,即它将返回错误\u访问\u拒绝、错误\u共享\u违规或所有其他错误的错误\u GEN \u失败(即它将 隐藏 更新: 就合同而言,用户代码应该处理CopyFileEx失败(即返回FALSE时)。用户代码可以通过在失败时查询GetLastError来处理零个或多个特定错误代码。 用户代码很少实际处理错误代码。试图处理所有这些问题肯定不是最佳做法。如果用户代码对特定的错误代码有特定的操作,它应该这样做。否则,处理错误代码的唯一方法是向用户指示错误代码或记录错误代码(请参见FormatMessage),同时将其视为不透明值。
|
|
0___________ · 我可以在整个程序生命周期内保持句柄打开吗 2 年前 |