zoukankan      html  css  js  c++  java
  • 回炉重造之重读Windows核心编程-001-错误处理

      Windows处理错误靠的是API的返回值,类型不止一种种:

    1. VOID,函数不可能失败,Windows API的返回值很少是这个情况。
    2. BOOL,如果函数失败,则返回值是0,否则返回是非零值。不要测试返回值是否为TRUE
    3. HANDLE,如果函数失败,则返回值通常是NULL,否则返回一个HANDLE用于操作对象。有的函数是返回INVALID_HANDLE_VALUE的,它被定义为-1,以函数在文档中的说明为标准!
    4. PVOID,如果函数失败,则返回NULL,否则返回内存块的地址。
    5. LONG/DWORD,比较麻烦。某些情况下,函数无法对想要计数的对象计数,则返回值通常是0或者-1。为了处理潜在的错误,必须认真阅读SDK文档中的说明。

      当Windows函数检测到一个错误的时候,会使用线程本地存储的机制,关联错误代码和调用函数的线程。这样就可以保证线程不会影响各自的错误代码。

      而确定这个错误的方法就是调用GetLastError函数,它只返回一个DWORD类型的错误代码。

      当你拥有这个错误代码后,必须将号码转化成更有用的对象,这里可以根据头文件WinError.h中定义的错误代码列表来处理。

      示例程序可以参照VS的一个小工具Error Lookup。

  • 相关阅读:
    Red Hat Enterprise Linux 7的新功能
    Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解
    Unix/Linux环境C编程入门教程(40) 初识文件操作
    hadoop 1.2.1 安装步骤 伪分布式
    heritrix 3.2.0 -- 环境搭建
    nyoj301递推求值
    nyoj301递推求值
    luogu1962斐波那契数列
    矩阵快速幂模板
    矩阵快速幂模板
  • 原文地址:https://www.cnblogs.com/leoTsou/p/12344048.html
Copyright © 2011-2022 走看看