Windows System Programming
Welcome to the new class website of Windows System Programming. This page links to all the slides for the current class, plus assignment information.
Syllabus
The goal of the class is to introduce you to the practical aspects of low-level Windows programming. As such, we will cover Unicode, DLLs, DLL injection, Advanced Windows Debugging, Semaphores, Processes, Multi-threaded programming and, time permitting, elementary device driver programming.
Prerequisites
The class is rather intensive. To benefit from it fully, you need to be concentrating on the message, not the medium. As such, you need to be very comfortable in C, Assembly, C++ (to a lesser extent) and the CLR (loose working knowledge). The workload for the class is high: my firm belief is that when it comes to programming constructs, practice makes perfect! Thus, there are over 10 programming assignments, ranging from trivial to very difficult.
The book for the class is no longer out of print. It has been reissued as "Windows via C/C++" by Jeffrey Richter and Christophe Nasarre and is available through Microsoft Press.
This course would not have been possible without the cooperation of Jeffrey Richter, whom I thank for his assistance.
Slides
This deck changes as a function to time. Please check back for additional materials covered in class.
- Introduction
- Tools
- C++ Refresher; Dr. Ondi's Slides
- C++ Classes
- Errors
- Unicode
- Kernel Objects
- Processes
- Jobs/Thread Basics
- Thread Scheduling
- Thread Sync, User mode
- Thread Sync, Kernel mode
- Thread Pools
- Memory Introduction
- Practical Memory Exercises
- Virtual Memory
- Memory Mapped Files Introduction
- Memory Mapped Files Continued
- DLLs, Introduction
- DLLs, Continued
- DLL Magic Part I
- DLL Magic Part II
- SEH Introduction
- SEH Continued
- SEH - Unhandled Exceptions
- Asynchronous IO Part I
- Asynchronous IO Part II
