【问题标题】:is there a way to get winapi error flags as strings?有没有办法将 winapi 错误标志作为字符串获取?
【发布时间】:2013-01-18 00:30:51
【问题描述】:

我的意思是这些:http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx

以下是每个错误的三个数据:

0 (0x0)
ERROR_SUCCESS
The operation completed successfully.

1 (0x1)
ERROR_INVALID_FUNCTION
Incorrect function.

2 (0x2)
ERROR_FILE_NOT_FOUND
The system cannot find the file specified.

所以,错误号是从 GetLastError() 返回的,我也知道如何使用 FormatMessage http://msdn.microsoft.com/en-us/library/windows/desktop/ms679351(v=vs.85).aspx 获取描述。但我的问题是如何获取这些错误标志:ERROR_INVALID_FUNCTION, ERROR_FILE_NOT_FOUND - 作为字符串。我知道我可以自己为此创建一个地图,但我想知道这些是否还没有像错误描述一样存储在 Windows 中的某个位置。

[OT] 这里是错误描述的 sn-p。

char *err_msg;
int num_chars = FormatMessage(
  FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
  NULL,
  errCode,
  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // default language
  (LPTSTR) &err_msg,
  0,
  NULL
);

【问题讨论】:

  • 我很确定没有什么可以得到#defined名称。

标签: c++ winapi error-code


【解决方案1】:

Windows 中没有内置这样的方法。

#define 标识符特定于 C 和 C++ 语言,不用于例如 C#。另一件需要注意的是,根据所使用的 API,对于相同的错误代码可以有多个不同的 #define,例如 ERROR_INVALID_HANDLE (Win32) 和 WSA_INVALID_HANDLE (Winsock)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多