为什么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)here和here。
是否可以安全地将其长返回值转换为DWORD,然后使用setLasterror()将其设置为全局错误代码?
没什么不可以的。只要你能做到这一点,包括成功的错误。
关于c - RegCreateKeyEx()和GetLastError(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25281832/