获得系统函数错误代码
一个Windows函数返回的错误代码对确认函数为什么会运行失败常常很有用,Microsoft公司编译了所有可能错误代码的列表,并且为每个错误代码分配了一个32位的号码。从系统内部来讲,当一个windows函数检测到一个错误时,它会使用所以个称为线程本地存储器[2](thread-local storage)的机制,将相应的错误代码号码与调用的线程关联起来。这将使线程能独立的运行,而不会影响各自的错误代码。当函数返回时,它的返回值就能指明一个错误已经发生,若要确定这个错误,通过调用GetLastError()函数可以取得线程的32位错误代码(一个DWORD类型变量的值)。当取得32位错误代码后,必须将其转换为有用的某种对象,而WinError.h头文件中包含了Microsoft公司定义的错误代码列表。从此文件中可得到一个错误有3种表示方法:一个消息ID,消息文本和一个号码,具体的细节内容可查阅WinError.h头文件。
值得注意的是当Windows函数运行失败时,应该立即调用GetLasstError函数。如果在一个函数运行失败后,还调用了其他的函数,则其错误代码就可能被改写。
在进行调试时,在VC6中可以配置Watch窗口,以便始终显示错误代码的号码和该错误的描述。要实现这个,必须在Watch窗口的 某一行键入“@err,hr”。这样就能始终显示当前执行的函数返回的错误代码。如下图: