windows核心编程 - (EPUB全文下载)

文件大小:7.4 mb。
文件格式:epub 格式。
书籍内容:

第一部分 程序员必读
第1章 对程序错误的处理
在开始介绍Microsoft Windows 的特性之前,必须首先了解Windows的各个函数是如何进行错误处理的。
当调用一个Windows函数时,它首先要检验传递给它的的各个参数的有效性,然后再设法执行任务。如果传递了一个无效参数,或者由于某种原因无法执行这项操作,那么操作系统就会返回一个值,指明该函数在某种程度上运行失败了。表1 - 1列出了大多数Windows函数使用的返回值的数据类型。
表1-1 Wi n d o w s 函数常用的返回值类型
  数据类型  
  
表示失败的值  
  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 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 公司定义的错误代码的列 表。下面显示了该列表的某些内容,使你能够看到它的大概样子:
// MessageId: ERROR_SUCCESS

//

// MessageText:

//

//  The operation completed successfully.

//

#define ERROR_SUCCESS                    0L

#define NO_ERROR 0L                            // dderror

//

// MessageId: ERROR_INVALID_FUNCTION

//

// MessageText:

//

//  Incorrect function.

//

#define ERROR_INVALID_FUNCTION           1L    // dderror

//

// MessageId: ERROR_FILE_NOT_FOUND

//

// MessageText:

//

//  The system cannot find the file specified.

//

#define ERROR_FILE_NOT_FOUND             2L

//

// MessageId: ERROR_PATH_NOT_FOUND

//

// MessageText:

//

//  The system cannot find the path specified.

//

#define ERROR_PATH_NOT_FOUND             3L

//

// MessageId: ERROR_TOO_MANY_OPEN_FILES

//

// MessageText:

//

//  The system cannot open the file.

//

#define ERROR_TOO_MANY_OPEN_FILES        4L

//

// MessageId: ERROR_ACCESS_DENIED

//

// MessageText:

//

//  Access is denied.

//

#define ERROR_ACCESS_DENIED              5L
如你所见,每个错误都有3 种表示法:一个消息I D (这是你可以在源代码中使用的一个宏,以便与G e t L a s t E r r o r 的返回值进行比较),消息文本(对错误的英文描述 ............

书籍插图:
书籍《windows核心编程》 - 插图1
书籍《windows核心编程》 - 插图2

以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。

版权声明:书云(openelib.org)是世界上最大的在线非盈利图书馆之一,致力于让每个人都能便捷地了解我们的文明。我们尊重著作者的知识产权,如您认为书云侵犯了您的合法权益,请参考版权保护声明,通过邮件openelib@outlook.com联系我们,我们将及时处理您的合理请求。 数研咨询 流芳阁 研报之家 AI应用导航 研报之家
书云 Open E-Library » windows核心编程 - (EPUB全文下载)