新闻资讯
看你所看,想你所想

Windows核心编程(英文版)

完从到宁附任出波袁书是Windows程序来自设计领域的名著,涵盖了Windows的计晶最新版本Vi360百科sta以及WindowsXP的最新内容。书中全面深入地介绍了Windows的各种基本要素,如进程、线程池、虚拟内存、DLL、设备I/O和SEH等,并列举了大量应用程序,精辟地分析了要素的使用方法。

  • 中文名 Windows核心编程(英文版)
  • 定价 128
  • 出版社 人民邮电出版社
  • 作者 (美国)里克特
  • 装帧 平装

基本简介

 来自 书 名: Wind该止注修式ows核心编程(英文版)

  作 者:(美国)里克

  出版社: 人民邮电出版社

  出版时间: 2008

  ISBN: 9787115182128

  开本: 16

  定价: 128.00 元

内容简介

  360百科《Windows核心编程(第5版·英文版)》适于各层次Windows编程人员阅读。

作者简介

  来自JeffreyRichter360百科全球享有盛誉的微软技术专家,著名技术咨询和培训公司Wintelle够理教例要若预ct创始人之一,MSDNMagazine杂志特邀编辑。多年来,他担任微软各开发团队顾问,参与了微软的许多关键产品包括各版本Windows、VisualStudio、MicrosoftOffce和.NET框架的设计和编程。他撰写了一系列著作,包括本书和《深入理解.NET》(第2版·英文版,人民邮电出版社。2008),都堪称技术图书的典范,影响了一代Windows程序员,并因此荣获微软公司杜区最高技术荣誉"微软软件传奇人物"(SoftwareLegend)令束搞动称号。

编辑推荐

  Windows程序设计巅峰地余之作,新版涵盖WindowsVista和WindowsServer2008最新核心特性,Windows程序员迈向卓越的必由之路。

  《Windows核心编程(第5版·英文版)》是Windows程序设计领域广受推崇的圣经级著作。书中深入剖析了Windows程序员必须掌握的底层实现机理,通过大量贴近实战、精心编写的代码,详细阐述了Windows的各种基本要素。如字符和字符串、内核对象、进程、作业、线程、纤程、内存管理、DLL和异常处理等。

  新版做了较大幅度的更新。一些章节(如第11章)全面重写。其他章节也有重要修订,以涵盖Windows最新版本(WindowsVista和WindowsServer2008)的核心特性。支持64位Windows。代码主要用C++进行了全面半胞若主孔县武收进改写,更加简明易懂

目录

  Part IRequired Reading

  1Error Handling

  Defining Your Own Error Cod棉方史师然溶卷金照es

  The ErrorShow Sample Application

  2Working with Characters and Strings

  Character Encodings

  ANSI and Unicode Character and String Data Types

  Unicode and ANSI Functions in Windows

  Unicode and ANSI Functions in the C Run-Time Library

  Secure String Functions in the C Run-Time Library

 呼王心室发 Introducing the New Secure String F点候距清边室盟担记放unctions

 七同分再却企息只日 How to Get More Control When Performing String Operations

  Windows String Functions

  Why You Should Use 织织那Unicode

  How 史业总回加标附曲验水宪We Recommend Working with Characters and S矛声突沉王言压亲宪trings

  Translating Strings Between Unicode and 记洲密因专分联武ANSI

  Exporting ANSI and Unicode DLL Functions

  Determining If Text Is ANSI or Unicode

 员老 3Kernel Objects

  What Is a Kernel Object?

  Usage Count华界宪ing

  Security

  A Process' Kernel Object Handle Table

  Creating a Kernel Obje背育业模征情ct

  Closing a Kernel Object

  Sharing Kernel Objects Across Process Boundaries

  Using Object Handle Inheritance

  Naming Objects

  Duplicating Object Handles

  Part IIGetting Work Done

  4Processes

  Writing Your First Windows Application

  A Process Instance Handle

  The CreateProcess Function

  pszApplicationName and pszCommandLine

  Terminating a Process

  The Primary Thread's Entry-Point Function Returns

  The ExitProcess Function

  The TerminateProcess Function

  When All the Threads in the Process Die

  When a Process Terminates

  Child Processes

  Running Detached Child Processes

  When Administrator Runs as a Standard User

  Elevating a Process Automatically

  Elevating a Process by Hand

  What Is the Current Privileges Context?

  Enumerating the Processes Running in the System

  5Jobs

  Placing Restrictions on a Job's Processes

  Placing a Process in a Job

  Terminating All Processes in a Job Querying Job Statistics

  Job Notifications

  The Job Lab Sample Application

  6Thread Basics

  When to Create a Thread

  When Not to Create a Thread

  Writing Your First Thread Function

  The CreateThread Function

  psa

  cbStackSize

  pfnStartAddr and pvParam

  dwCreateFlags

  pdwThreadID

  Terminating a Thread

  The Thread Function Returns

  The ExitThread Function

  The TerminateThread Function

  When a Process Terminates

  When a Thread Terminates

  Some Thread Internals

  C/C++ Run-Time Library Considerations

  Oops-I Called CreateThread Instead of _beginthreadex by Mistake

  C/C++ Run-Time Library Functions That You Should Never Call

  Gaining a Sense of One's Own Identity

  Converting a Pseudohandle to a Real Handle

  7Thread Scheduling, Priorities, and Affinities

  Suspending and Resuming a Thread

  Suspending and Resuming a Process

  Sleeping

  Switching to Another Thread

  Switching to Another Thread on a Hyper-Threaded CPU

  A Thread's Execution Times

  Putting the CONTEXT in Context

  Thread Priorities

  An Abstract View of Priorities

  Programming Priorities

  Dynamically Boosting Thread Priority Levels

  Tweaking the Scheduler for the Foreground Process

  Scheduling I/O Request Priorities

  The Scheduling Lab Sample Application

  Affinities

  8Thread Synchronization in User Mode

  Atomic Access: The Interlocked Family of Functions

  Cache Lines

  Advanced Thread Synchronization

  A Technique to Avoid

  Critical Sections

  Critical Sections: The Fine Print

  Critical Sections and Spinlocks

  Critical Sections and Error Handling

  Slim Reader-Writer Locks

  Condition Variables

  The Queue Sample Application

  Useful Tips and Techniques

  9Thread Synchronization with Kernel Objects

  Wait Functions

  Successful Wait Side Effects

  Event Kernel Objects

  The Handshake Sample Application

  Waitable Timer Kernel Objects

  Having Waitable Timers Queue APC Entries

  Timer Loose Ends

  Semaphore Kernel Objects

  Mutex Kernel Objects

  Abandonment Issues

  Mutexes vsCritical Sections

  The Queue Sample Application

  A Handy Thread Synchronization Object Chart

  Other Thread Synchronization Functions

  Asynchronous Device I/O

  WaitForInputIdle

  MsgWaitForMultipleObjects(Ex)

  WaitForDebugEvent

  SignalObjectAndWait

  Detecting Deadlocks with the Wait Chain Traversal API

  10Synchronous and Asynchronous Device I/O

  Opening and Closing Devices

  A Detailed Look at CreateFile

  Working with File Devices

  Getting a File's Size

  Positioning a File Pointer

  Setting the End of a File

  Performing Synchronous Device I/O

  Flushing Data to the Device

  Synchronous I/O Cancellation

  Basics of Asynchronous Device I/O

  The OVERLAPPED Structure

  Asynchronous Device I/O Caveats

  Canceling Queued Device I/O Requests

  Receiving Completed I/O Request Notifications

  Signaling a Device Kernel Object

  Signaling an Event Kernel Object

  Alertable I/O

  I/O Completion Ports

  11 The Windows Thread Pool

  Scenario 1: Call a Function Asynchronously

  Explicitly Controlling a Work Item

  The Batch Sample Application

  Scenario 2: Call a Function at a Timed Interval

  The Timed Message Box Sample Application

  Scenario 3: Call a Function When a Single Kernel Object Becomes Signaled

  Scenario 4: Call a Function When Asynchronous I/O Requests Complete

  Callback Termination Actions

  Customized Thread Pools

  Gracefully Destroying a Thread Pool: Cleanup Groups

  12Fibers

  Working with Fibers

  The Counter Sample Application

  Part IIIMemory Management

  13Windows Memory Architecture

  A Process' Virtual Address Space

  How a Virtual Address Space Is Partitioned

  Null-Pointer Assignment Partition

  User-Mode Partition

  Kernel-Mode Partition

  Regions in an Address Space

  Committing Physical Storage Within a Region

  Physical Storage and the Paging File

  Physical Storage Not Maintained in the Paging File

  Protection Attributes

  Copy-on-Write Access

  Special Access Protection Attribute Flags

  Bringing It All Home

  Inside the Regions

  The Importance of Data Alignment

  14Exploring Virtual Memory

  System Information

  The System Information Sample Application

  Virtual Memory Status

  Memory Management on NUMA Machines

  The Virtual Memory Status Sample Application

  Determining the State of an Address Space

  The VMQuery Function

  The Virtual Memory Map Sample Application

  15Using Virtual Memory in Your Own Applications

  Reserving a Region in an Address Space

  Committing Storage in a Reserved Region

  Reserving a Region and Committing Storage Simultaneously

  When to Commit Physical Storage

  Decommitting Physical Storage and Releasing a Region

  When to Decommit Physical Storage

  The Virtual Memory Allocation Sample Application

  Changing Protection Attributes

  Resetting the Contents of Physical Storage

  The MemReset Sample Application

  Address Windowing Extensions

  The AWE Sample Application

  16A Thread's Stack

  The C/C++ Run-Time Library's Stack-Checking Function

  The Summation Sample Application

  17Memory-Mapped Files

  Memory-Mapped Executables and DLLs

  Static Data Is Not Shared by Multiple Instances of an Executable or a DLL

  Memory-Mapped Data Files

  Method 1: One File, One Buffer

  Method 2: Two Files, One Buffer

  Method 3: One File, Two Buffers

  Method 4: One File, Zero Buffers

  Using Memory-Mapped Files

  Step 1: Creating or Opening a File Kernel Object

  Step 2: Creating a File-Mapping Kernel Object

  Step 3: Mapping the File's Data into the Process' Address Space

  Step 4: Unmapping the File's Data from the Process' Address Space

  Steps 5and 6: Closing the File-Mapping Object and the File Object

  The File Reverse Sample Application

  Processing a Big File Using Memory-Mapped Files

  Memory-Mapped Files and Coherence

  Specifying the Base Address of a Memory-Mapped File

  Implementation Details of Memory-Mapped Files

  Using Memory-Mapped Files to Share Data Among Processes

  Memory-Mapped Files Backed by the Paging File

  The Memory-Mapped File Sharing Sample Application

  Sparsely Committed Memory-Mapped Files

  The Sparse Memory-Mapped File Sample Application

  18Heaps

  A Process' Default Heap

  Reasons to Create Additional Heaps

  Component Protection

  More Efficient Memory Management

  Local Access

  Avoiding Thread Synchronization Overhead

  Quick Free

  How to Create an Additional Heap

  Allocating a Block of Memory from a Heap

  Changing the Size of a Block

  Obtaining the Size of a Block

  Freeing a Block

  Destroying a Heap

  Using Heaps with C++

  Miscellaneous Heap Functions

  Part IVDynamic-Link Libraries

  19DLL Basics

  DLLs and a Process' Address Space

  The Overall Picture

  Building the DLL Module

  Building the Executable Module

  Running the Executable Module

  20DLL Advanced Techniques

  Explicit DLL Module Loading and Symbol Linking

  Explicitly Loading the DLL Module

  Explicitly Unloading the DLL Module

  Explicitly Linking to an Exported Symbol

  The DLL's Entry-Point Function

  The DLL_PROCESS_ATTACH Notification

  The DLL_PROCESS_DETACH Notification

  The DLL_THREAD_ATTACH Notification

  The DLL_THREAD_DETACH Notification

  Serialized Calls to DllMain

  DllMain and the C/C++ Run-Time Library

  Delay-Loading a DLL

  The DelayLoadApp Sample Application

  Function Forwarders

  Known DLLs

  DLL Redirection

  Rebasing Modules

  Binding Modules

  21Thread-Local Storage

  Dynamic TLS

  Using Dynamic TLS

  Static TLS

  22DLL Injection and API Hooking

  DLL Injection: An Example

  Injecting a DLL Using the Registry

  Injecting a DLL Using Windows Hooks

  The Desktop Item Position Saver (DIPS) Utility

  Injecting a DLL Using Remote Threads

  The Inject Library Sample Application

  The Image Walk DLL

  Injecting a DLL with a Trojan DLL

  Injecting a DLL as a Debugger

  Injecting Code with CreateProcess

  API Hooking: An Example

  API Hooking by Overwriting Code

  API Hooking by Manipulating a Module's Import Section

  The Last MessageBox Info Sample Application

  Part VStructured Exception Handling

  23Termination Handlers

  Understanding Termination Handlers by Example

  Funcenstein1

  Funcenstein2

  Funcenstein3

  Funcfurter1

  Pop Quiz Time: FuncaDoodleDoo

  Funcenstein4

  Funcarama1

  Funcarama2

  Funcarama3

  Funcarama4: The Final Frontier

  Notes About the finally Block

  Funcfurter2

  The SEH Termination Sample Application

  24Exception Handlers and Software Exceptions

  Understanding Exception Filters and Exception Handlers by Example

  Funcmeister1

  Funcmeister2

  EXCEPTION_EXECUTE_HANDLER

  Some Useful Examples

  Global Unwinds

  Halting Global Unwinds

  EXCEPTION_CONTINUE_EXECUTION

  Use EXCEPTION_CONTINUE_EXECUTION with Caution

  EXCEPTION_CONTINUE_SEARCH

  GetExceptionCode

  Memory-Related Exceptions

  Exception-Related Exceptions

  Debugging-Related Exceptions

  Integer-Related Exceptions

  Floating Point-Related Exceptions

  GetExceptionInformation

  Software Exceptions

  25Unhandled Exceptions, Vectored Exception Handling, and C++ Exceptions

  Inside the UnhandledExceptionFilter Function

  Action #1: Allowing Write Access to a Resource and Continuing Execution

  Action #2: Notifying a Debugger of the Unhandled Exception

  Action #3: Notifying Your Globally Set Filter Function

  Action #4: Notifying a Debugger of the Unhandled Exception (Again)

  Action #5: Silently Terminating the Process

  UnhandledExceptionFilter and WER Interactions

  Just-in-Time Debugging

  The Spreadsheet Sample Application

  Vectored Exception and Continue Handlers

  C++ Exceptions vsStructured Exceptions

  Exceptions and the Debugger

  26Error Reporting and Application Recovery

  The Windows Error Reporting Console

  Programmatic Windows Error Reporting

  Disabling Report Generation and Sending

  Customizing All Problem Reports Within a Process

  Creating and Customizing a Problem Report

  Creating a Custom Problem Report: WerReportCreate

  Setting Report Parameters: WerReportSetParameter

  Adding a Minidump File to the Report: WerReportAddDump

  Adding Arbitrary Files to the Report: WerReportAddFile

  Modifying Dialog Box Strings: WerReportSetUIOption

  Submitting a Problem Report: WerReportSubmit

  Closing a Problem Report: WerReportCloseHandle

  The Customized WER Sample Application

  Automatic Application Restart and Recovery

  Automatic Application Restart

  Support for Application Recovery

  Part VIAppendixes

  AThe Build Environment

  The CmnHdr.h Header File

  Microsoft Windows Version Build Option

  Unicode Build Option

  Windows Definitions and Warning Level 4

  The pragma message Helper Macro

  The chINRANGE Macro

  The chBEGINTHREADEX Macro

  DebugBreak Improvement for x86Platforms

  Creating Software Exception Codes

  The chMB Macro

  The chASSERT and chVERIFY Macros

  The chHANDLE_DLGMSG Macro

  The chSETDLGICONS Macro

  Forcing the Linker to Look for a (w)WinMain Entry-Point Function

  Support XP-Theming of the User Interface with pragma

  BMessage Crackers, Child Control Macros, and API Macros

  Message Crackers

  Child Control Macros

  API Macros

  Index

  ……

转载请注明出处安可林文章网 » Windows核心编程(英文版)

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com