最近再看一本《windows核心编程》,深入学习一些东西。
一个返回值是BOOL类型的函数,失败返回0,否则返回一个非0的值,而非0值有可能代表别的含义,所以判断一个函数执行是否成功最稳妥的方法是和FALSE比较,而不是和TRUE比较。
windows能返回错误代码,有助于我们理解函数调用失败的原因,WinError.h文件中定义了所有的错误代码和含义,每个代码是一个32位整数。
在内部,当windows函数检测到错误时,不同线程不会互相干扰错误代码,调用GetLastError函数可以查看错误代码。每个错误代码有三部份组成,消息id、消息文本、编号。VS的调试器有一个很有用的功能,在监视窗口中选择一行输入$err,hr,就可以查看错误代码和含义了。

还有一个FormatMessage函数可以将错误代码转换成文本描述,而且是支持多种语言的。也可以使用SetLastError函数定义自己的错误代码。