Windows函数错误处理 (转)

Windows函数错误处理 (转)[@more@]

  当调用一个windows函数时,它首先要检验传递给它的各个参数的有效性,然后再设法执行任务.如果传递一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就会返回一个值,指明该函数在某种程度上运行失败了。
  Windows函数常用的返回值类型:
  void
  BOOL:0,非0,TURE,FALSE
   HANDLE:HANDLE,NULL,INVALID_HANDLE_VALID)
   PVOID:NULL,PVOID
   LONG/Dword:具体函数而定
  ...
  microsoft编译了一个所有可能的错误代码列表,并且为每个错误代码分配了一个32位的号码. WinError.h头文件(大约2万多行)包含了Micorsoft定义的错误代码列表.
  当一个Windows函数检测到一个错误时,它会使用线程本地存储(thread-local storage)机制,将相应的错误代码号码与调用的线程关联起来.这将使线程能够互相独立的运行,而不会影响各自的错误代码.
  当函数返回时,它的返回值就能指明是否有错误发生,若有且要确定是什么错误,就需要调用DWORD GetLastError()函数,它返回线程的32位错误代码.Visual Studio有一个Error Lookup程序可用将错误代码的号码换成相应文本描述.Windows还提供了一个函数FormatMessage可以将错误代码转换成它的文本描述.
DWORD FormatMessage(
  DWORD dwFlags,  // source and processing options
  LPCVOID lpSource,  // message source
  DWORD dwMessageId,  // message identifier
  DWORD dWlanguageId, // language identifier
  LPTSTR lpBuffer,  // message buffer
  DWORD nSize,  // maximum size of message buffer
  va_list *Arguments  // array of message inserts
);
  我们也可以在自己的函数中使用该机制,只需要使用VOID SetLastError(DWORD dwErrCode)函数即可,如果WinError.h中的任何代码都不能正确地反映该错误的性质,那么可以创建你自己的代码。错误代码的域的划分表:
位  31~30  29  28  27~16  15~0
内容  严重性  Microsoft/客户  保留  设备代码  异常代码

含义  0=成功  0=MS定义的代码  必顺是0  由MS定义  由MS或客户定义
  1=参考
  2=警告  1=客户定义的代码
  3=错误

注:如果创建自己的错误代码,必顺使29位为1.


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-1007542/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-1007542/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值