Windows核心编程C/C++读书笔记

Windows核心编程C/C++读书笔记Windows 核心编程错误处理

目录

第一章 错误处理


在遇到问题的时候要经常使用GetLastError()

第一章 错误处理

调用windows函数时,他会先验证我们所给传入的参数,然后开始执行。如果传入参数无效,或者其他原因导致无法执行,则函数的返回值将指出函数因为某些原因失败了。

在这里重点说明一个Win常见函数的返回值数据类型:HANDLE,LONG/DWORD

HANDLE:如果函数失败,则返回NULL;否则,HANDLE将标识一个可操纵的对象。请注意这种返回值,因为某些函数返回为INVALID_HANDLE_VALUE的一个句柄值,他被定义为-1。函数Platform DK文档清楚的说明了函数时返回NULL还是INVALID_HANDLE_VALUE标识失败的。

LONG/DWORD:返回计数的函数通常会返回一个LONG或者DWORD。如果函数出于某种原因不能对我们想要计数的东西进行计数,通常会返回0或者-1(具体取决于函数)。

当Windows函数检测有错误时,他会使用线程本地存储区的机制将相应的错误代码与主调线程(即就是发出调用的线程),关联到一起,这种机制时不同的线程能独立运行,不会出现相互干扰的情况。当要具体查看错误,可以调用GetLastError函数。

DWORD GetLastError();

每个错误都有三种表示:消息ID(在源代码中使用的宏,用于GetLastError的返回值进行比较);消息文本;一个编号(应该避免使用此编号,尽量使用消息ID)。

当windows函数返回失败应立即调用GetLastError,因为假如有调用另一个windows函数,则值很可能被改写。再调用成功时也可以调用GetLastError函数来确定额外的信息。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212817.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午7:12
下一篇 2026年3月18日 下午7:12


相关推荐

  • Window基础(黑客基础)

    Window基础(黑客基础)一、Window重要目录1.ProgramData:C:\ProgramData是个公用的被创建文件夹或文件存放的地方,这些文件夹或文件仅由创建者完整控制。programdata是电脑C盘的一个系统文件夹2.ProgramFiles和ProgramFiles(86):程序软件默认安装目录,它们的区别是前者是安装64位软件,后者是安装32位软件3.Window:系统安装目录4….

    2022年5月2日
    43
  • 如何写详细设计文档

    如何写详细设计文档nbsp 在大多数软件项目中 要末不作详细设计 要么开发完成后再补详细设计文档 质量也不容乐观 文档与系统往往不能同步 使详细设计文档完全流于形式 对工作没有起到实际的帮助 那到底应不应该写详细设计文档呢 怎么使详细设计文档起到他应有的作用呢 下面就让我们来认识一下详细设计及写详细设计文档的好处和问题 什么是详细设计 nbsp 详细设计是相对概要设计而言的 是瀑布开发流程的一个重要环节 在概要设计的高层设计的基

    2026年3月17日
    2
  • 由近期裁员想到的

    由近期裁员想到的经济形势一路走低,公司裁员的消息也偶尔听闻,其中闹的比较醒目的则是摩托罗拉移动的裁员。从报道来看,南京摩托罗拉移动的各位对这个公司还是很有些恋恋不舍的,甚至提出了希望再为公司工作一年的期望。具体情形其实不太了解,不妄发评论了,但这事再次提醒我们一个很本质的事情:职场如市场,本质上就是一场交换。员工可以跳槽,公司可以裁员,都是非常的正常。很多公司都会强调企业文化,希望能营…

    2022年7月17日
    18
  • OutOfMemory及其解决方法「建议收藏」

    一、内存溢出类型1、java.lang.OutOfMemoryError:PermGenspaceJVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果webapp用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,

    2022年4月10日
    724
  • ★ Android ExpandableListView中子元素无法点击 解决方案!

    ★ Android ExpandableListView中子元素无法点击 解决方案!

    2021年3月12日
    148
  • Linux系统安装Cache数据库配置环境

    Linux系统安装Cache数据库配置环境1 Cach 介绍 nbsp 官网 https www intersystems com 开发者社区 https community intersystems com nbsp nbsp gt gt nbsp download nbsp Cach 安装指南 https docs intersystems com latest csp docbook DocBook UI Page cls KEY G

    2025年11月8日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号