LoadLibrary return NULL 或错误代码 < 32 是否失败?

Does LoadLibrary return NULL or an error code < 32 on failure?

MSDN documentation 状态

If the function succeeds, the return value is a handle to the module.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

Microsoft support 有一个 return 值小于 32 的列表,表示错误

The API function LoadLibrary loads a DLL and returns either a handle or an error code. If the return value is less than 32, it indicates one of the errors listed below. A return value greater than or equal to 32 indicates success and you should call the FreeLibrary function to unload the library.

第二篇文章最后一次审阅是在 2003 年,明确适用于 Visual Basic 4.0。

什么是正确的? LoadLibrary returning != 0>= 32 是否成功?或者两者都是正确的,我缺少一些关于版本差异的提示或与 C 样式接口不同的 VB 特定 Windows API 包装器?

  • 在 32 位和 64 位中 Windows、LoadLibrary returns NULL 失败。
  • 在16位中WindowsLoadLibraryreturns一个小于32的值表示失败。

KB142814 显然是从 16 位 Windows 天开始的,如果你仔细观察,你会看到一个 kb16bitonly 关键字。我认为可以安全地假设您不再为 16 位开发 Windows!

关于此事,陈峰的一些相关文章:

LoadLibrary 的现代文档在这里:https://msdn.microsoft.com/en-us/library/windows/desktop/ms684175.aspx,这是您问题中的第一个 link。它说:

Return value

If the function succeeds, the return value is a handle to the module.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.