LoadLibrary在失败时返回NULL或错误代码<32吗?

die*_*nse 3 winapi

MSDN文档状态

如果函数成功,则返回值是模块的句柄.

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

Microsoft支持的返回值列表小于32表示错误

API函数LoadLibrary加载DLL并返回句柄或错误代码.如果返回值小于32,则表示下面列出的错误之一.返回值大于或等于32表示成功,您应该调用该FreeLibrary函数来卸载库.

第二篇文章最后一次在2003年进行了审核,并明确适用于Visual Basic 4.0.

什么是正确的?LoadLibrary回归!= 0还是>= 32成功?或者两者都正确,我错过了一些版本差异或与C风格界面不同的VB特定Windows API包装器的提示?

Dav*_*nan 7

  • 在32位和64位Windows中,LoadLibrary返回NULL失败.
  • 在16位Windows中,LoadLibrary返回小于32的值表示失败.

KB142814显然可以追溯到16位Windows天,如果你仔细观察,你会看到一个kb16bitonly关键字.我认为可以安全地假设你不再为16位Windows开发了!

Raymond Chen关于此事的一些相关文章:

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

返回值

如果函数成功,则返回值是模块的句柄.

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