windows核心编程阅读第一章笔记(不重要,因为如果要设置一些错误值,使用枚举就行,不用那么复杂)

1.Windows函数使用的返回值的数据类型。

在这里插入图片描述

2.函数错误返回值

  • 错误定义:

一个Wi n d o w s函数返回的错误代码对了解该函数为什么会运行失败常常很有用。 M i c r o s o f t
公司编译了一个所有可能的错误代码的列表,并且为每个错误代码分配了一个 3 2位的号码。

  • 错误发生原理:

从系统内部来讲,当一个Wi n d o w s函数检测到一个错误时,它会使用一个称为线程本地存
储器(thread-local storage)的机制,将相应的错误代码号码与调用的线程关联起来(线程本地存储
器将在第2 1章中介绍)。这将使线程能够互相独立地运行,而不会影响各自的错误代码。当函
数返回时,它的返回值就能指明一个错误已经发生。

  • 怎么确定错误-》请调用G e t L a s t E r r o r函数

DWORD GetLastError();
返回值:该函数只返回线程的3 2位错误代码
说明:当你拥有3 2位错误代码的号码时,必须将该号码转换成更有用的某种对象。 Wi n E r r o r. h头
文件包含了M i c r o s o f t公司定义的错误代码的列表。下面显示了该列表的某些内容,使你能够看
到它的大概样子:

在这里插入图片描述
在这里插入图片描述

  • 三种错误的表示方法
    法 一:一个消息I D

(这是你可以在源代码中使用的一个宏,
以便与G e t L a s t E r r o r的返回值进行比较),消息文本(对错误的英文描述)和一个号码(应该避
2计计第一部分 程序员必读 下载
免使用这个号码,可使用消息I D)。请记住,这里只显示了Wi n E r r o r. h头文件中的很少一部分内
容,整个文件的长度超过2 1 0 0 0行。

补充解释:
注意 G e t L a s t E r r o r能返回线程产生的最后一个错误。如果该线程调用的 Wi n d o w s函数
运行成功,那么最后一个错误代码就不被改写,并且不指明运行成功。有少数
Wi n d o w s函数并不遵循这一规则,它会更改最后的错误代码;但是 Platform SDK文档
通常指明,当函数运行成功时,该函数会更改最后的错误代码。

法二:Wi n d o w s 9 8

许多Windows 98的函数实际上是用M i c r o s o f t公司的1 6位Windows 3.1产
品产生的1 6位代码来实现的。这种比较老的代码并不通过 G e t L a s t E r r o r之类的函数来
报告错误,而且M i c r o s o f t公司并没有在Windows 98中修改1 6位代码,以支持这种错误
处理方式。对于我们来说,这意味着 Windows 98中的许多Wi n 3 2函数在运行失败时不
能设置最后的错误代码。该函数将返回一个值,指明运行失败,这样你就能够发现该
函数确实已经运行失败,但是你无法确定运行失败的原因。

最后错误代码机制:有些Wi n d o w s函数之所以能够成功运行,其中有许多原因。例如,创建指明的事件内核对
象之所以能够取得成功,是因为你实际上创建了该对象,或者因为已经存在带有相同名字的事
件内核对象。**你应搞清楚成功的原因。为了将该信息返回, M i c r o s o f t公司选择使用最后错误代
码机制。**这样,当某些函数运行成功时,就能够通过调用 G e t L a d t E r r o r函数来确定其他的一些
信息。对于具有这种行为特性的函数来说, Platform SDK文档清楚地说明了G e t L a s t E r r o r函数
可以这样使用。请参见该文档,找出C r e a t e E v e n t函数的例子。

进行调试的时候,监控线程的最后错误代码是非常有用的。在Microsoft Visual studio 6.0中,
M i c r o s o f t的调试程序支持一个非常有用的特性,即可以配置 Wa t c h窗口,以便始终都能显示线
程的最后错误代码的号码和该错误的英文描述。通过选定 Wa t c h窗口中的一行,并键入
“@ e r r, h r”,就能够做到这一点。观察图 1 - 1,你会看到已经调用了C r e a t e F i l e函数。该函数返回
I N VA L I D _ H A N D L E _ VA L U E(- 1)的H A N D L E,表示它未能打开指定的文件。但是Wa t c h窗口
向我们显示最后错误代码(即如果调用 G e t L a s t E r r o r函数,该函数返回的错误代码)是
0 x 0 0 0 0 0 0 0 2。该Wa t c h窗口又进一步指明错误代码 2是指“系统不能找到指定的文件。”你会发
现它与Wi n E r r o r. h头文件中的错误代码2所指的字符串是相同的

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值