Windows核心编程(原书第4版)(china-pub首发)
基本信息
编辑推荐
全球销售200,000册,Windows程序设计领域颠峰之作,培育了几代软件开发设计人员。
本书前一次出版时,300余人参与评论,好评不断
内容简介回到顶部↑
本书是讲解windows操作系统内部机制的一本专著。作者从基本概念入手,全面系统地介绍了windows底层实现机制、windows应用程序的基本构件(包括进程、线程、内存管理、动态链接库、线程本地存储和unicode)以及各类windows api等,并列举了大量应用程序示例,精辟地分析了windows编程的各个难点和要点,为掌握windows编程技巧提供了一条有效的捷径。
本书适合windows编程人员参考。
作者简介:
jeffrey richter,是一位在全球享有盛誉的技术作家,尤其在windows/.net领域有着杰出的贡献。他的第一本windows著作《windows 95:a developer's guide》大获好评,从而声名远扬。之后,他又推出了经典著作《windows高级编程指南》和dwindows核心编程》。如今这两本书早已成为windows程序设计领域的经典之作,培育了几代软件开发设计人员。jeffrey是winteiiect公司的创始人之一,也是msdn杂志.net专栏的特邀编辑。他对windows思想的领悟、对windows细节的熟稔,是其他任何作家难以企及的。他是windows技术作家中当之无愧的一面旗帜。
本书适合windows编程人员参考。
作者简介:
jeffrey richter,是一位在全球享有盛誉的技术作家,尤其在windows/.net领域有着杰出的贡献。他的第一本windows著作《windows 95:a developer's guide》大获好评,从而声名远扬。之后,他又推出了经典著作《windows高级编程指南》和dwindows核心编程》。如今这两本书早已成为windows程序设计领域的经典之作,培育了几代软件开发设计人员。jeffrey是winteiiect公司的创始人之一,也是msdn杂志.net专栏的特邀编辑。他对windows思想的领悟、对windows细节的熟稔,是其他任何作家难以企及的。他是windows技术作家中当之无愧的一面旗帜。
作译者回到顶部↑
目录回到顶部↑
译者序
前言
作译者简介
第一部分 程序员必读
第1章 错误处理
1.1 自定义错误处理的实现
1.2 错误显示例程
第2章 unicode
2.1 字符集
2.1.1 单字节和双字节字符集
2.1.2 unicode:宽字节字符集
2.2 为何需要unicode
2.3 windows 2000和unicode
2.4 windows 98和unicode
2.5 windows ce和unicode
2.6 评论
2.7 关于com
2.8 如何编写unicode源代码
2.8.1 c运行库的unicode支持
2.8.2 windows定义的unicode数据类型
前言
作译者简介
第一部分 程序员必读
第1章 错误处理
1.1 自定义错误处理的实现
1.2 错误显示例程
第2章 unicode
2.1 字符集
2.1.1 单字节和双字节字符集
2.1.2 unicode:宽字节字符集
2.2 为何需要unicode
2.3 windows 2000和unicode
2.4 windows 98和unicode
2.5 windows ce和unicode
2.6 评论
2.7 关于com
2.8 如何编写unicode源代码
2.8.1 c运行库的unicode支持
2.8.2 windows定义的unicode数据类型
译者序回到顶部↑
本书是讲解Windows操作系统内部机制的一本专著,作者从基本概念入手,全面系统地介绍了Windows的各种基本构件,如进程、线程、DLL和内存管理等,并列举了大量应用程序,精辟地分析了构件的使用方法,为掌握Windows编程技巧提供了一条有效的捷径。对于不同水平的Windows编程人员来说,本书都具有极好的参考价值。.
侯捷先生在他的《Win32多线程程序设计》一书中说,搞Windows程序设计有两方面的资源是不可或缺的,一是MSDN,其次便是本书。可见这本书在Windows程序设计领域中的重要地位。本书的内容相当全面,加上作者亲自编写的十几个精巧程序来现身说法,因而成为Windows程序设计方面的一本圣典级书籍,任何想进行Windows系统级编程或者想提高Windows程序设计水平的人都应该好好研读。..
全书由黄陇负责翻译,李虎参与了部分翻译工作并统校全书,此外,李晓丽、刘冬懿、许福、王晓博、宋淼、刘辉、贾荣飞、曹羽中、万钧、卞磊、张军、郭荣锋、曹剑挺、张家旗等对本书进行了检查,对译文给出重要的反馈意见,在此向他们表示感谢。这里还要特别感谢机械工业出版社华章分社的陈冀康主任和周茂辉编辑为本书所做的辛勤工作。需要说明的是,由于译者水平有限,译文中的不妥之处仍在所难免,欢迎广大读者批评指正。
黄陇李虎
2008年4月17日 ...
侯捷先生在他的《Win32多线程程序设计》一书中说,搞Windows程序设计有两方面的资源是不可或缺的,一是MSDN,其次便是本书。可见这本书在Windows程序设计领域中的重要地位。本书的内容相当全面,加上作者亲自编写的十几个精巧程序来现身说法,因而成为Windows程序设计方面的一本圣典级书籍,任何想进行Windows系统级编程或者想提高Windows程序设计水平的人都应该好好研读。..
全书由黄陇负责翻译,李虎参与了部分翻译工作并统校全书,此外,李晓丽、刘冬懿、许福、王晓博、宋淼、刘辉、贾荣飞、曹羽中、万钧、卞磊、张军、郭荣锋、曹剑挺、张家旗等对本书进行了检查,对译文给出重要的反馈意见,在此向他们表示感谢。这里还要特别感谢机械工业出版社华章分社的陈冀康主任和周茂辉编辑为本书所做的辛勤工作。需要说明的是,由于译者水平有限,译文中的不妥之处仍在所难免,欢迎广大读者批评指正。
黄陇李虎
2008年4月17日 ...
前言回到顶部↑
Microsoft Windows是一个复杂的操作系统。它提供了如此多的特性和功能,以至于任何人都无法充分地理解系统的每个细节。Windows操作系统的复杂性也让学习它的人很难决定应该从何处入手。我本人总是喜欢从最底层开始,逐步学习和掌握系统的基本构件(basic building block)。一旦理解了系统的基本构件,循序渐进地学习高级知识就不再是一件难事。.
例如,我在本书中没有刻意讨论组件对象模型(Component Object Model,COM)。COM实质上是使用进程、线程、内存管理、DLL、线程本地存储、Unicode等基本构件构建而成的。如果对这些基本构件有所了解,那么理解COM实质上就是理解如何使用这些构件的问题。我非常同情那些企图一步登天来学习COM体系结构的人。他们学习的道路上有很长的路要走,并且受到一些知识漏洞的束缚,这些知识漏洞必定对他们编写代码和制定学习计划造成负面影响。
因此,本书的目的是:介绍每一个Windows操作系统平台上的开发者(至少我的观点如此)都应该非常熟悉的构件。在讨论每一个构件时,本书不仅将描述Windows操作系统如何使用它们,并且还将介绍应用程序如何最好地利用它们。这些构件典型的实现机制是利用范型函数或C++类,将这些Windows构件组合在一起所形成的效果要比它们各自形成的效果之和大得多。
今天的Windows平台
目前Microsoft公司销售3种不同的操作系统内核。每种内核都针对一个特定的计算环境进行了优化。Microsoft公司声称每种平台提供了相同的应用程序编程接口(API),以吸引软件开发人员使用Windows操作系统。这意味着,当你学习如何为一个内核编写Windows应用程序时,便了解了如何为任何其他内核编写Windows应用程序。
本书讲述了如何使用Windows API来编写应用程序,因此从本书中学习到的任何知识(在理论上)都适用于所有的内核。实际上,各个内核是有差异的,操作系统的功能是用不同的方法来实现的。这意味着不同的内核的底层概念是相同,但是具体细节可能不同。
下面首先介绍3种不同的Windows内核。
Windows 2000内核 Window 2000是Microsoft公司推出的高端操作系统。它拥有很多特性,下面是它的一些特性(顺序不分先后):
它可以作为工作站、服务器和数据中心来运行。
该系统非常健壮,它能避免不完善的应用程序导致的系统崩溃。
该系统非常安全,它能阻止对系统管理的资源(如文件和打印机)的未授权访问。
它拥有丰富的工具和实用程序,供组织中的管理员对操作系统进行管理。
内核大多是用C和C++编写的,因此该系统可以容易地移植到其他CPU架构。
系统本身支持Unicode,因此,系统的本地化和国际化变得更容易。
它的内存管理特性提供了极其丰富、高效的功能。
结构化异常处理(SEH)特性使得错误恢复更容易进行。
动态链接库(DLL)允许系统灵活地扩展。
多线程和对多处理器的支持,这使得系统具备很好的伸缩性,便于性能改进。
文件系统的特征提供了方便的途径用来跟踪用户如何在其机器上操纵数据。
Windows 98内核 Windows 98是Microsoft公司推出的面向消费者的操作系统。它拥有Windows 2000的许多特性,但是却没有包含它的某些关键特性。例如,Windows 98不够健壮(一个应用程序可能导致系统崩溃),不够安全,是一个单处理器内核(这限制了它的伸缩性),并且它对Unicode的支持也不如Windows 2000。
例如,我在本书中没有刻意讨论组件对象模型(Component Object Model,COM)。COM实质上是使用进程、线程、内存管理、DLL、线程本地存储、Unicode等基本构件构建而成的。如果对这些基本构件有所了解,那么理解COM实质上就是理解如何使用这些构件的问题。我非常同情那些企图一步登天来学习COM体系结构的人。他们学习的道路上有很长的路要走,并且受到一些知识漏洞的束缚,这些知识漏洞必定对他们编写代码和制定学习计划造成负面影响。
因此,本书的目的是:介绍每一个Windows操作系统平台上的开发者(至少我的观点如此)都应该非常熟悉的构件。在讨论每一个构件时,本书不仅将描述Windows操作系统如何使用它们,并且还将介绍应用程序如何最好地利用它们。这些构件典型的实现机制是利用范型函数或C++类,将这些Windows构件组合在一起所形成的效果要比它们各自形成的效果之和大得多。
今天的Windows平台
目前Microsoft公司销售3种不同的操作系统内核。每种内核都针对一个特定的计算环境进行了优化。Microsoft公司声称每种平台提供了相同的应用程序编程接口(API),以吸引软件开发人员使用Windows操作系统。这意味着,当你学习如何为一个内核编写Windows应用程序时,便了解了如何为任何其他内核编写Windows应用程序。
本书讲述了如何使用Windows API来编写应用程序,因此从本书中学习到的任何知识(在理论上)都适用于所有的内核。实际上,各个内核是有差异的,操作系统的功能是用不同的方法来实现的。这意味着不同的内核的底层概念是相同,但是具体细节可能不同。
下面首先介绍3种不同的Windows内核。
Windows 2000内核 Window 2000是Microsoft公司推出的高端操作系统。它拥有很多特性,下面是它的一些特性(顺序不分先后):
它可以作为工作站、服务器和数据中心来运行。
该系统非常健壮,它能避免不完善的应用程序导致的系统崩溃。
该系统非常安全,它能阻止对系统管理的资源(如文件和打印机)的未授权访问。
它拥有丰富的工具和实用程序,供组织中的管理员对操作系统进行管理。
内核大多是用C和C++编写的,因此该系统可以容易地移植到其他CPU架构。
系统本身支持Unicode,因此,系统的本地化和国际化变得更容易。
它的内存管理特性提供了极其丰富、高效的功能。
结构化异常处理(SEH)特性使得错误恢复更容易进行。
动态链接库(DLL)允许系统灵活地扩展。
多线程和对多处理器的支持,这使得系统具备很好的伸缩性,便于性能改进。
文件系统的特征提供了方便的途径用来跟踪用户如何在其机器上操纵数据。
Windows 98内核 Windows 98是Microsoft公司推出的面向消费者的操作系统。它拥有Windows 2000的许多特性,但是却没有包含它的某些关键特性。例如,Windows 98不够健壮(一个应用程序可能导致系统崩溃),不够安全,是一个单处理器内核(这限制了它的伸缩性),并且它对Unicode的支持也不如Windows 2000。
书摘回到顶部↑
第一部分 程序员必读
第1章错误处理
在开始学习Windows提供的一些必要特性之前,有必要了解各种Windows函数是如何进行错误处理的。
当调用一个Windows函数时,系统首先验证传递给该函数的参数是否有效,然后开始执行该函数的任务。如果函数接收到一个无效的参数,或者由于其他原因导致该函数不能执行,则通过某种返回值来指示函数执行失败。表1-1给出了大多数Windows函数用到的返回值的数据类型。
当一个Windows函数返回一个错误代码时,了解该函数为何执行失败往往非常有用。微软公司已经编译了一系列可能的错误代码,而且为每个错误代码赋予了一个32位的数字。
在系统内部,当一个Windows函数检测到一个错误时,它常常使用一种称为线程本地存储(thread-local storage)的机制来将合适的错误代码号和被调用的线程联系起来(线程一本地存储机制在第21章中讨论)。这样就允许线程之间互相独立地运行,而不会影响彼此的错误代码。当函数返回其值后,该返回值会指示发生了一个错误。可调用GetLastError函数查看错误详情。
……
第1章错误处理
在开始学习Windows提供的一些必要特性之前,有必要了解各种Windows函数是如何进行错误处理的。
当调用一个Windows函数时,系统首先验证传递给该函数的参数是否有效,然后开始执行该函数的任务。如果函数接收到一个无效的参数,或者由于其他原因导致该函数不能执行,则通过某种返回值来指示函数执行失败。表1-1给出了大多数Windows函数用到的返回值的数据类型。
当一个Windows函数返回一个错误代码时,了解该函数为何执行失败往往非常有用。微软公司已经编译了一系列可能的错误代码,而且为每个错误代码赋予了一个32位的数字。
在系统内部,当一个Windows函数检测到一个错误时,它常常使用一种称为线程本地存储(thread-local storage)的机制来将合适的错误代码号和被调用的线程联系起来(线程一本地存储机制在第21章中讨论)。这样就允许线程之间互相独立地运行,而不会影响彼此的错误代码。当函数返回其值后,该返回值会指示发生了一个错误。可调用GetLastError函数查看错误详情。
……








点击看大图






加载中...

