Windows核心编程:第5版·英文版

Windows核心编程:第5版·英文版
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
2008-08
ISBN: 9787115182128
定价: 128.00
装帧: 其他
开本: 其他
纸张: 其他
原版书名: Windows via C/C++
分类: 自然科学
84人买过
  • 【内容简介】
    本书是Windows 程序设计领域的名著,涵盖了Windows 的最新版本Vista 以及Windows XP 的最新内容。书中全面深入地介绍了Windows 的各种基本要素,如进程、线程池、虚拟内存、DLL、设备I/O 和SEH 等,并列举了大量应用程序,精辟地分析了要素的使用方法。.
    本书适于各层次Windows 编程人员阅读。 ...
    【目录信息】
    Acknowledgments . xxi
    Introduction xxiii
    64-Bit Windows xxiii
    What’s  Jeffrey Richter全球享有盛誉的微软技术专家,著名技术咨询和培训公司Wintellect创始人之一,MSDN Magazine杂志特邀编辑。多年来,他担任微软各开发团队顾问,参与了微软的许多关键产品包括各版本Windows、Visual Studio、Microsoft Offce和.NET框架的设计和编程。他撰写了一系列著作,包括本书和《深入理解.NET》(第2版·英文版,人民邮电出版社。2008),都堪称技术图书的典范,影响了一代Windows程序员,并因此荣获微软公司杜区最高技术荣誉“微软软件传奇人物”(Software Legend)称号。 Part I Required Reading
    1 Error Handling
    Defining Your Own Error Codes
    The ErrorShow Sample Application
    2 Working 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
    3 Kernel 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 II Getting Work Done
    4 Processes
    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
    5 Jobs
    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
    6 Thread 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
    7 Thread 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
    8 Thread 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
    9 Thread 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 vs  Critical 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
    10 Synchronous 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
    12 Fibers
    Working with Fibers
    The Counter Sample Application
    Part III Memory Management
    13 Windows 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
    14 Exploring 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
    15 Using 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
    16 A Thread’s Stack
    The C/C++ Run-Time Library’s Stack-Checking Function
    The Summation Sample Application
    17 Memory-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 5  and 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
    18 Heaps
    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 IV Dynamic-Link Libraries
    19 DLL Basics
    DLLs and a Process’ Address Space
    The Overall Picture
    Building the DLL Module
    Building the Executable Module
    Running the Executable Module
    20 DLL 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
    21 Thread-Local Storage
    Dynamic TLS
    Using Dynamic TLS
    Static TLS
    22 DLL 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 V Structured Exception Handling
    23  Termination 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
    24 Exception 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
    25 Unhandled 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 vs  Structured Exceptions
    Exceptions and the Debugger
    26 Error 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 VI Appendixes
    A The 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 x86  Platforms
    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
    B Message Crackers, Child Control Macros, and API Macros
    Message Crackers
    Child Control Macros
    API Macros
    Index
  • 内容简介:
    【内容简介】
    本书是Windows 程序设计领域的名著,涵盖了Windows 的最新版本Vista 以及Windows XP 的最新内容。书中全面深入地介绍了Windows 的各种基本要素,如进程、线程池、虚拟内存、DLL、设备I/O 和SEH 等,并列举了大量应用程序,精辟地分析了要素的使用方法。.
    本书适于各层次Windows 编程人员阅读。 ...
    【目录信息】
    Acknowledgments . xxi
    Introduction xxiii
    64-Bit Windows xxiii
    What’s 
  • 作者简介:
    Jeffrey Richter全球享有盛誉的微软技术专家,著名技术咨询和培训公司Wintellect创始人之一,MSDN Magazine杂志特邀编辑。多年来,他担任微软各开发团队顾问,参与了微软的许多关键产品包括各版本Windows、Visual Studio、Microsoft Offce和.NET框架的设计和编程。他撰写了一系列著作,包括本书和《深入理解.NET》(第2版·英文版,人民邮电出版社。2008),都堪称技术图书的典范,影响了一代Windows程序员,并因此荣获微软公司杜区最高技术荣誉“微软软件传奇人物”(Software Legend)称号。
  • 目录:
    Part I Required Reading
    1 Error Handling
    Defining Your Own Error Codes
    The ErrorShow Sample Application
    2 Working 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
    3 Kernel 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 II Getting Work Done
    4 Processes
    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
    5 Jobs
    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
    6 Thread 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
    7 Thread 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
    8 Thread 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
    9 Thread 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 vs  Critical 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
    10 Synchronous 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
    12 Fibers
    Working with Fibers
    The Counter Sample Application
    Part III Memory Management
    13 Windows 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
    14 Exploring 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
    15 Using 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
    16 A Thread’s Stack
    The C/C++ Run-Time Library’s Stack-Checking Function
    The Summation Sample Application
    17 Memory-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 5  and 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
    18 Heaps
    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 IV Dynamic-Link Libraries
    19 DLL Basics
    DLLs and a Process’ Address Space
    The Overall Picture
    Building the DLL Module
    Building the Executable Module
    Running the Executable Module
    20 DLL 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
    21 Thread-Local Storage
    Dynamic TLS
    Using Dynamic TLS
    Static TLS
    22 DLL 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 V Structured Exception Handling
    23  Termination 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
    24 Exception 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
    25 Unhandled 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 vs  Structured Exceptions
    Exceptions and the Debugger
    26 Error 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 VI Appendixes
    A The 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 x86  Platforms
    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
    B Message Crackers, Child Control Macros, and API Macros
    Message Crackers
    Child Control Macros
    API Macros
    Index
查看详情
您可能感兴趣 / 更多
Windows核心编程:第5版·英文版
双曲型偏微分方程和几何光学(影印版)
Jeffrey、Rauch 著
Windows核心编程:第5版·英文版
皮肤病学原理——诊断与治疗精要(第6版)
Jeffrey J. Miller 著;James G. Marks Jr、李承新、邹先彪 译
Windows核心编程:第5版·英文版
机场运行、安全和应急管理实务:当今和未来的方法
JeffreyC.Price、JeffreyS.Forrest 著;茹毅、倪海云、孙佳 译
Windows核心编程:第5版·英文版
福斯特麻醉学(第4版)
Jeff 著;Michael、J.Murray、Barry、A.Harrison、冯艺、郭向阳、王东信 译
Windows核心编程:第5版·英文版
Rey and Pals
Jeffrey Brown
Windows核心编程:第5版·英文版
Algorithms
Jeff Erickson
Windows核心编程:第5版·英文版
啤酒品鉴大全:啤酒爱好者的基础指南
Jeff Alworth
Windows核心编程:第5版·英文版
Stock Trader's Almanac 2012 (Almanac Investor Series)[股市交易年鉴 2012 (丛书)]
Jeffrey Hirsch(ed) 著
Windows核心编程:第5版·英文版
DiaryofaWimpyKid#4:DogDays小屁孩日记4:三伏天
Jeff Kinney(杰夫·金尼) 著
Windows核心编程:第5版·英文版
HushLittlePolarBear
Jeff Mack(杰夫·麦克) 著
Windows核心编程:第5版·英文版
Investing in Renewable Energy: Making Money on Green Chip Stocks
Jeff Siegel 著
Windows核心编程:第5版·英文版
Sex, Politics, and Society:The Regulation of Sexuality Since 1800 (Themes in British Social History)
Jeffrey Weeks