为什么RegCreateKeyEx()返回一个LONG,而不是通过DWORD设置一个SetLastError()错误代码?
我是否可以安全地将其LONG返回值转换为DWORD,然后用SetLastError()将其设置为全局错误代码?
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724844(v=vs.85).aspx

最佳答案

为什么regcreatekeyex()返回一个long,而不是通过setlasterror()设置一个dword错误代码?
可能是因为注册表api在windows还是16位时启动,而那时SetLastError()/GetLastError()函数不存在。不管是谁添加了32位版本的registry函数,他都认为保持调用样式向后兼容比更新以使用SetLastError()更重要。
有关信息,请参阅陈雷蒙(Raymond Chen)的Awesome博客(和Awesome Book)herehere
是否可以安全地将其长返回值转换为DWORD,然后使用setLasterror()将其设置为全局错误代码?
没什么不可以的。只要你能做到这一点,包括成功的错误。

关于c - RegCreateKeyEx()和GetLastError(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25281832/

10-13 06:55