GetLastError()的用法

来源:互联网 发布:阿里云体系架构 编辑:程序博客网 时间:2024/05/08 01:03

http://msdn.microsoft.com/en-us/library/ms679360(VS.85).aspx

 在VC中编写应用程序时,经常需要涉及到错误处理问题。许多函数调用只用TRUE和FALSE来表明函数的运行结果。一旦出现错误,MSDN中往往会指出请用GetLastError()函数来获得错误原因。
     可问题是,GetLastError()返回的只是一个双字节数值(DWORD)。OH,MY GOD!目前Win32的出错编号已经从0排到11031,而这还不是错误编码的全部。因为错误代码还在不断增加。
     我想没有人愿意自己去查出错编码所对应的错误信息。好在Windows(Windows95以上, Window NT 3.1以上)已经提供了现成的错误信息处理函数:FormatMessage()。 以下是用FormatMessage()得到由GetLastError()返回的出错编码所对应错误信息的示例:
     LPVOID lpMsgBuf;
     FormatMessage(
     FORMAT_MESSAGE_ALLOCATE_BUFFER |
     FORMAT_MESSAGE_FROM_SYSTEM |
     FORMAT_MESSAGE_IGNORE_INSERTS,
     NULL,
     GetLastError(),
     MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
     (LPTSTR) &lpMsgBuf,
     0,
     NULL
     ); 
    // Process any inserts in lpMsgBuf. 
     //显示错误信息 
     MessageBox(  (LPCTSTR)lpMsgBuf);
    
     // Free the buffer.
     LocalFree( lpMsgBuf );

windowsAPI函数所以头文件--#include<windows.h>

FormatMessage()功能就是将GetLastError得到的错误信息(这个错误信息是数字代号)转化成字符串信息的函数

  函数FormatMessage声明如下:

  WINBASEAPI

       DWORD WINAPI FormatMessageA(

                              DWORD dwFlags,      //错误信息类型标志

                              LPCVOID lpSource,   //指定本地信息定义 其依赖于第一个参数的设置

                              DWORD dwMessageId,  //指定被请求的消息标示,如果dwFlags设置

                                                                    //为 FORMAT_MESSAGE_FROM_STRING 这个参数将被忽略

                              DWORD dwLanguageId,  //指定被请求的消息的语言标示

                              LPSTR lpBuffer,   //用来保存格式话后的消息字符串的地址

                              DWORD nSize,   //如果第一个参数为指定FORMAT_MESSAGE_ALLOCATE_BUFFER

                                                             // 这个参数就是字符串的最大长度

                              va_list * Arguments

  );

原创粉丝点击