Windows API 错误码解析

来源:互联网 发布:淘宝投诉卖家后果 编辑:程序博客网 时间:2024/06/05 08:59

Windows API 错误码解析

调用Windows API失败后,通常需要通过GetLastError来获取对应的错误码,要将此错误码解析为对应的描述信息,则需要调用另外一个Windows API FormatMessage,原型如下:

DWORD WINAPI FormatMessage(  _In_      DWORD dwFlags,  _In_opt_  LPCVOID lpSource,  _In_      DWORD dwMessageId,  _In_      DWORD dwLanguageId,  _Out_     LPTSTR lpBuffer,  _In_      DWORD nSize,  _In_opt_  va_list *Arguments);

详细函数说明情况:msdn文档

具体实现代码:

/*     wstring 转换为 string */  std::string w2c(const wchar_t * pw)  {      std::string val = "";      if(!pw)      {          return val;      }      size_t size= wcslen(pw)*sizeof(wchar_t);      char *pc = NULL;      if(!(pc = (char*)malloc(size)))      {          return val;      }      size_t destlen = wcstombs(pc,pw,size);      /*转换不为空时,返回值为-1。如果为空,返回值0*/      if (destlen ==(size_t)(0))      {          return val;      }      val = pc;      delete pc;      return val;  } 
string parseErrorCode(DWORD nErrorCode){LPVOID lpMsgBuf;FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,NULL,nErrorCode,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPTSTR) &lpMsgBuf,0, NULL );string sMsg = w2c((LPTSTR)lpMsgBuf);LocalFree(lpMsgBuf);return sMsg;}


0 0
原创粉丝点击