Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > Windows函数错误处理
【标  题】:Windows函数错误处理
【关键字】:Windows
【来  源】:http://blog.chinaunix.net/article.php?articleId=16602&blogId=484

Windows函数错误处理

Your Ad Here 当调用一个Windows函数时,它首先要检验传递给它的各个参数的有效性,然后再设法执行任务.如果传递一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就会返回一个值,指明该函数在某种程度上运行失败了。......

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

Win2000命令全集:【上一篇】
在dialog中加view:【下一篇】
【相关文章】
  • Windows 启动盘制作教程<转>
  • Windows 2003 优化大全<转>
  • 微软在瘦身版Windows中做手脚 欧盟展开调查
  • 关于WINDOWS系列号
  • Windows无法新增字体
  • Windows Server 操作系统中的常用SID
  • Windows XP全攻略
  • Windows 2000的Update服务将终止
  • 取消windows操作系统的默认共享
  • 命令行下,远程解锁WINDOWS 帐号的方法(原创)
  • 【随机文章】
  • IBM拓展Eclipse服务 首次提供开源技术工具
  • EGP教程(8)之EGP选路更新报文
  • 安装配置telnet服务
  • 通过一个小例子来说明ajax和WebService服务的使用
  • 从一个舆论调查的制作谈面向对象的编程思路(二)
  • 提高Windows系统速度的八大绝招
  • TCL/EXPECT自动化测试脚本实例一 --- telnet到目标机器
  • ASP.NET: XML留言版第二版
  • 零散类型、状态的定义与使用
  • 基于能力协调的模块化组织流程研究
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.