请输入您要查询的百科知识:

 

词条 Windows核心编程(英文版)
释义

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

版权信息

书 名: Windows核心编程(英文版)

作 者:(美国)里克特

出版社: 人民邮电出版社

出版时间: 2008

ISBN: 9787115182128

开本: 16

定价: 128.00 元

内容简介

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

作者简介

JeffreyRichter全球享有盛誉的微软技术专家,著名技术咨询和培训公司Wintellect创始人之一,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 Codes

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 Functions

How to Get More Control When Performing String Operations

Windows String Functions

Why You Should Use Unicode

How We Recommend Working with Characters and Strings

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 Counting

Security

A Process' Kernel Object Handle Table

Creating a Kernel Object

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

……

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/25 5:49:23