Windows 10 System Programming
โ Scribed by Pavel Yosifovich
- Publisher
- leanpub.com
- Year
- 2019
- Tongue
- English
- Leaves
- 629
- Category
- Library
No coin nor oath required. For personal study only.
โฆ Table of Contents
Table of Contents
Introduction
Who Should Read This Book
What You Should Know to Use This Book
Sample Code
Chapter 1: Foundations
Windows Architecture Overview
Processes
Dynamic Link Libraries
Virtual Memory
Threads
General System Architecture
Windows Application Development
Your First Application
Working with Strings
Strings in the C/C++ Runtime
String Output Parameters
Safe String Functions
32-bit vs. 64-bit Development
Coding Conventions
C++ Usage
Handling API Errors
Defining Custom Error Codes
The Windows Version
Getting the Windows Version
Exercises
Summary
Chapter 2: Objects and Handles
Kernel Objects
Running a Single Instance Process
Handles
Pseudo Handles
RAII for Handles
Using WIL
Creating Objects
Object Names
Sharing Kernel Objects
Sharing by Name
Sharing by Handle Duplication
Private Object Namespaces
Bonus: WIL Wrappers for Private Namespaces
Other Objects and Handles
User Objects
GDI Objects
Summary
Chapter 3: Processes
Process Basics
Processes in Process Explorer
Process Creation
The main Functions
Process Environment Variables
Creating Processes
Handle Inheritance
Process Drive Directories
Process (and Thread) Attributes
Protected and PPL Processes
UWP Processes
Minimal and Pico Processes
Process Termination
Enumerating Processes
Using EnumProcesses
Using the Toolhelp Functions
Using the WTS Functions
Using the Native API
Exercises
Summary
Chapter 4: Jobs
Introduction to Jobs
Creating Jobs
Nested Jobs
Querying Job Information
Job Accounting Information
Querying for Job Process List
Setting Job Limits
CPU Rate Limit
User Interface Limits
Job Notifications
Silos
Exercises
Summary
Chapter 5: Threads Basics
Introduction
Sockets, Cores and Logical Processors
Creating and Managing Threads
The Primes Counter Application
Running Primes Counter
Terminating Threads
A Thread's Stack
A Thread's Name
What About the C++ Standard Library?
Exercises
Summary
Chapter 6: Thread Scheduling
Priorities
Scheduling Basics
Single CPU Scheduling
The Quantum
Processor Groups
Multiprocessor Scheduling
Affinity
CPU Sets vs. Hard Affinity
System CPU Sets
Revised Scheduling Algorithm
Observing Scheduling
General Scheduling
Hard Affinity
CPU Sets
Background Mode
Priority Boosts
Completing I/O Operations
Foreground Process
GUI Thread Wakeup
Starvation Avoidance
Other Aspects of Scheduling
Suspend and Resume
Suspending and Resuming a Process
Sleeping and Yielding
Summary
Chapter 7: Thread Synchronization (Intra-Process)
Synchronization Basics
Atomic Operations
The Simple Increment Application
The Interlocked Family of Functions
Critical Sections
Locks and RAII
Deadlocks
The MD5 Calculator Application
Calculating MD5 Hash
The Hash Cache
Image Loads Notifications
Event Parsing
Putting it All Together
Reader Writer Locks
RAII Wrappers
MD5 Calculator 2
Condition Variables
The Queue Demo Application
Waiting on Address
Synchronization Barriers
What About the C++ Standard Library?
Exercises
Summary
Chapter 8: Thread Synchronization (Inter-Process)
Dispatcher Objects
Succeeding a Wait
The Mutex
The Mutex Demo Application
Abandoned Mutex
The Semaphore
The Queue Demo Application
The Event
Working with Events
The Waitable Timer
Other Wait Functions
Waiting in Alertable State
Waiting on GUI Threads
Waiting for an Idle GUI Thread
Signaling and Waiting Atomically
Exercises
Summary
Chapter 9: Thread Pools
Why Use a Thread Pool?
Thread Pool Work Callbacks
The Simple Work Application
Controlling a Work Item
The MD5 Calculator Application
Thread Pool Wait Callbacks
Thread Pool Timer Callbacks
The Simple Timer Sample
Thread Pool I/O Callbacks
Thread Pool Instance Operations
The Callback Environment
Private Thread Pools
Cleanup Groups
Exercises
Summary
Chapter 10: Advanced Threading
Thread Local Storage
Dynamic TLS
Static TLS
Remote Threads
The Breakin Application
Thread Enumeration
The thlist Application
Caches and Cache Lines
Wait Chain Traversal
The Deadlock Detector Application
Asynchronous WCT Sessions
User Mode Scheduling
Init Once Initialization
Debugging Multithreaded Applications
Breakpoints
Parallel Stacks
Parallel Watch
Thread Names
Exercises
Summary
Chapter 11: File and Device I/O
The I/O System
The CreateFile Function
Working with Symbolic Links
Path Length
Directories
Files
Setting File Information
Synchronous I/O
Asynchronous I/O
ReadFileEx and WriteFileEx
Manually Queued APC
I/O Completion Ports
The Bulk Copy Application
Using the Thread Pool for I/O Completion
The Bulk Copy 2 Application
I/O Cancellation
Devices
Pipes and Mailslots
Pipes
Transactional NTFS
File Search and Enumeration
NTFS Streams
Summary
Chapter 12: Memory Management Fundamentals
Basic Concepts
Process Address Space
Page States
Address Space Layout
32-bit Systems
64-bit Systems
Address Space Usage
Memory Counters
Process Memory Counters
Process Memory Map
Page Protection
Enumerating Address Space Regions
The Simple VMMap Application
More Address Space Information
Sharing Memory
Page Files
WOW64
WOW64 Redirections
Virtual Address Translation
Summary
๐ SIMILAR VOLUMES
Delve into programming the Windows operating system through the Windows API in with C++. Use the power of the Windows API to working with processes, threads, jobs, memory, I/O and more. The book covers current Windows 10 versions, allowing you to get the most of what Windows has to offer to develope
This book is decently written but it just doesn't have the sufficient depth. And the writing style is a little messy.