dumperr.cpp

来自「手机编程之接收发送短信」· C++ 代码 · 共 66 行

CPP
66
字号
#include "stdafx.h"
#include "dumperr.h"
#include <stdio.h>

//-------------------------------------------------------------------------------------------
//	函数名:dump_com_error
//	函数功能:根据COM异常类的信息,填充错误字符串
//	参数说明:
//		_com_error &e : COM异常类
//		char* sError : 错误字符串
//    int nSize : 字符串的长度
//-------------------------------------------------------------------------------------------
void dump_com_error( _com_error &e, char* sError, int nSize, char* szPrompt /*=NULL*/ )
{
  _bstr_t bstrSource(e.Source());
  _bstr_t bstrDes(e.Description());

  memset(sError,0,nSize);
  if ( !szPrompt ) {
	  sprintf(sError,"COM ERROR!\r\n Code=0x%08lx\r\n"
					  "Code meaning = %s\r\n"
					  "Source=%s\r\n"
					  "Description=%s",
					  e.Error(),e.ErrorMessage(),
					  (LPCSTR) bstrSource,(LPCSTR)bstrDes);
  }else{
	  sprintf(sError,"%s\r\n Code=0x%08lx\r\n"
					  "Code meaning = %s\r\n"
					  "Source=%s\r\n"
					  "Description=%s",
					  szPrompt, 
					  e.Error(),e.ErrorMessage(),
					  (LPCSTR) bstrSource,(LPCSTR)bstrDes);
  }
}

//-------------------------------------------------------------------------------------------
//	函数名:dump_system_error
//	函数功能:根据当前的系统错误号,获得系统错误字符串
//	参数说明:
//		char* sError : 返回系统错误字符串
//-------------------------------------------------------------------------------------------
void dump_system_error(char* sError,int nSize,char* sDes)
{
  DWORD dwErr;
  char *sErr;

  memset(sError,0,nSize);
  sErr=(char*)malloc(nSize);
  memset(sErr,0,nSize);
  dwErr=::GetLastError();
  ::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,dwErr,
      MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT),(LPTSTR)sErr,nSize,NULL);
  if(sDes){
    sprintf(sError,"SYSTEM ERROR!\xd\xaCode = 0x%8lx\xd\xa\
                    Code meaning = %s\xd\xa\
                    Description = %s\xd\xa",
                    dwErr,sErr,sDes);
  }else{
    sprintf(sError,"SYSTEM ERROR!\xd\xaCode = 0x%8lx\xd\xa\
                    Code meaning = %s\xd\xa",
                    dwErr,sErr);
  }
  free(sErr);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?