Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > windows核心编程--函数返回错误
【标  题】:windows核心编程--函数返回错误
【关键字】:windows,--
【来  源】:http://www.cppblog.com/mzty/archive/2006/09/11/12266.html

windows核心编程--函数返回错误

Your Ad Here 1 windows程序错误的处理机制

??? windows API的返回类型
数据类型

表示失败的值

V O I D

该函数的运行不可能失败。Wi n d o w s 函数的返回值类型很少是V O I D

B O O L

如果函数运行失败,那么返回值是0 ,否则返回的是非0 值。最好对返回值进行测试,以确定它是0 还是非0 。不要测试返回值是否为T R U E

H A N D L E

如果函数运行失败,则返回值通常是N U L L ,否则返回值为H A N D L E ,用于标识你可以操作的一个对象。注意,有些函数会返回一个句柄值I N VALID_ HANDLE_VA L U E ,它被定义为- 1 。函数的Platform SDK 文档将会清楚地说明该函数运行失败时返回的是N U L L 还是I N VA L I D _ H A N D L E _ VA L I D

P V O I D

如果函数运行失败,则返回值是N U L L ,否则返回P V O I D ,以标识数据块的内存地址

L O N G / D W O R D

这是个难以处理的值。返回数量的函数通常返回L O N G 或D W O R D 。如果由于某种原因,函数无法对想要进行计数的对象进行计数,那么该函数通常返回0 或- 1 (根据函数而定)。如果调用的函数返回了L O N G / D W O R D ,那么请认真阅读Platform SDK文档,以确保能正确检查潜在的错误


Wi n E r r o r. h 头文件包含了M i c r o s o f t 公司定义的错误代码的列表,每个错误都有三种表示,例如下面:

// MessageId: ERROR_PATH_NOT_FOUND
// MessageText:
//? The system cannot find the path specified.
#define ERROR_PATH_NOT_FOUND???????????? 3L

当有错误发生时,可以通过下面函数得到错误的id,
DWORD GetLastError();
也可以通过下面函数由id得到对应的text:
DWORD FormatMessage(
? DWORD dwFlags,????? // source and processing options
? LPCVOID lpSource,?? // pointer to? message source
? DWORD dwMessageId,? // requested message identifier
? DWORD dwLanguageId, // language identifier for requested message
? LPTSTR lpBuffer,??? // pointer to message buffer
? DWORD nSize,??????? // maximum size of message buffer
? va_list *Arguments? // pointer to array of message inserts
);
当调用一个API出现错误时,可以立即通过一下方法查看错误,但是后面的API的调用会覆盖调前面的错误

o_SpxImage1.jpg

图1-1 在Visual Studio 6.0 的Wa t c h 窗口中键入“@ e r r, h r ”,就可以查看当前线程的最后错误代码

Visual studio 还配有一个小的实用程序,称为Error Lookup 。可以使用Error Lookup将错误代码的号码转换成相应文本描述(见图1 - 2 )。

o_SpxImage2.jpg

用户也可以定义自己的错误代码,但是要建立正确的32位的id哦,不能与系统的冲突啊.

表1-2 错误代码的域

3 1 ~30292827~1615~0
内容严重性M i c r o s o f t/客户保留设备代码异常代码
含义0 =成功0 =M i c r o s o f t公司定义的代码必须是0由M i c r o s o f t公司定义由Microsoft/客户定义
 1 =供参考1 =客户定义的代码   
 2 =警告    
 3 =错误  

?
一个语言细节问题:【上一篇】
如何解决那些垃圾网站自动弹出的问题啊??:【下一篇】
【相关文章】
  • .NET框架未公开的特性 ---------String类
  • More Effective C++ -- Tip 25
  • 再谈DBA---到底是鸡生蛋还是蛋生鸡
  • 关于子网掩码计算 ---ip地址计算----ip地址分配
  • netcat---windows版的详细说明
  • 推荐:NC的反弹shell---动画
  • 如何记录键盘操作--ZT
  • 还是那样的日子---在学校里
  • 在编程中常用的工具--今天学习的重点
  • 学习LINUX之前--操作系统
  • 【随机文章】
  • Enterprise Library Step By Step系列(十六):使用AppSetting Application Block
  • Nokia 手机 不开盖看清机内信息。 秘密号的使用大全
  • 小儿过敏性鼻炎的治愈,预防是重点!
  • 验证数字字符串
  • 设计一个具有健壮性,灵活性,可重用性的Web应用架构(二)--->实验总结
  • iTime 破解实录(2)
  • 程序语言的源和流
  • 开源面向对象数据库 db4o 之旅: 深入 db4o “db4o 之旅(三)”
  • Apache性能优化技巧
  • 解决ubuntu 6.06不能保存DNS地址的问题
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.