Windows函数错误处理

原创 2002年01月02日 15:03:00

   当调用一个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.

Windows常用系统函数

windows常用系统函数
  • u010459100
  • u010459100
  • 2016年04月22日 11:00
  • 1155

Windows API函数大全(精心总结)

总结整理了一下,便于Windows开发时查找。
  • hzm8341
  • hzm8341
  • 2017年02月22日 21:56
  • 581

windows中定时操作(SetTimer函数用法)

最近需要在服务端定时执行某个操作,于是需要用到SetTimer函数。当你需要每个一段时间执行一件事的的时候就需要使用SetTimer函数了。 使用定时器的方法比较简单,通常告诉WINDOWS一个时间间...
  • zhxuan30
  • zhxuan30
  • 2014年04月02日 14:59
  • 1235

windows 内核函数前缀解析

windows 内核函数前缀解析
  • chenlycly
  • chenlycly
  • 2016年10月10日 14:48
  • 839

linux和window下mkdir函数问题

通过WIN32宏进行判断 window下mkdir函数 #include int _mkdir( const char *dirname ); linux下mkdir函...
  • woodsp
  • woodsp
  • 2017年02月07日 14:04
  • 489

windows下创建目录的常见函数

windows下创建目录的常见函数 网上搜的都有小小的问题 bool fileExist(const char* fileName) { WIN32_FIND_DATA wfd; HAND...
  • xxq123321
  • xxq123321
  • 2015年05月07日 17:00
  • 729

Windows 内核函数

Windows 内核函数 因为C语言库是运行的R3应用层上的,而驱动程序是运行的内核模式下的。应用层的函数能调用内核层的函数库,但是内核层的函数由于一些安全性的权限措施,不能调用上层库。所以普通的C...
  • CSDN515
  • CSDN515
  • 2014年04月04日 19:32
  • 2128

Windows API函数大全(完整)

1. API之网络函数  WNetAddConnection 创建同一个网络资源的永久性连接  WNetAddConnection2 创建同一个网络资源的连接  WNetAddConnectio...
  • notbaron
  • notbaron
  • 2015年03月25日 23:58
  • 33000

windows平台下使用open,read等函数易错点及与fread等区别

一般情况下,我们只在linux平台下使用open,read等文件I/O函数
  • zhutou_xu
  • zhutou_xu
  • 2014年04月15日 23:22
  • 3233

Windows API 入门(什么是 Windows API?、 实例程序 、Windows API函数有几个?)

Windows API又叫做 API 函数, 是 Windows 的核心,从技术上讲,我们技术人员在 Windows 操作系统里做技术开发,Windows 对我们技术人员来说,里面有大量的 API 函...
  • x_y_q_
  • x_y_q_
  • 2016年08月29日 16:47
  • 2535
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows函数错误处理
举报原因:
原因补充:

(最多只允许输入30个字)