Windows System Programming
for Windows 7, Vista, XP, Server 2008/2003
The course has been completely revised and updated to cover the latest Windows releases (Windows 7, Vista, Server 2008, XP). New material, backed by lab exercises, provides enhanced treatment of parallelism, threads, synchronization, and performance issues, making this course especially useful for development of servers and other systems where performance and reliability are essential.
Upon successful completion of this 3 or 4-day lecture-lab course, you will be able to:
- Describe the Windows API and its role in Windows
- Develop, debug, and test Windows application programs using current Microsoft Visual Studio versions (2010,
- Describe and use the Windows system services and the Windows API
- Use basic I/O, including the file and console I/O, along with file and directory management and (optional module) registry programming
- Use structured exception handling (SEH) to simplify programming and increase reliability
- Use memory management and memory-mapped files to improve performance and share memory between processes
- Develop dynamic link libraries (DLLs) that can be shared by multiple processes and loaded dynamically at run time
- Understand process management and interprocess communication using pipes
- Create networked client/server applications using named pipes as well as Windows Sockets (sockets are discussed in an optional module)
- Manage and synchronize threads
- Understand when to synchronize threads using mutexes, semaphores, events, CRITICAL_SECTION objects, slim reader/writer (SRW) locks, and condition variables and describe related performance issues
- Use Windows services to deploy manageable server systems (optional
- Develop scalable multithreaded applications using thread pools and the client/server, boss/worker, and pipeline models (optional module) on multiprocessor systems
- Assure efficient 32-bit and 64-bit operation
- Secure Windows objects (optional module)
Course exercises use the Microsoft Visual Studio environment to develop, debug, and run a wide variety of programs that exercise the Windows system programming API. The exercises require course participants to repair, understand, and enhance realistic programs that often become the basis for larger programs. Correct solutions are provided.
This course can be tailored to student needs and has been successfully completed by software engineers of all experience levels who wish to master Windows system programming. Many course participants leveraged their experience in UNIX, Linux, or other operating systems, although such experience is not required.
Optional course modules provide in-depth coverage of Windows Sockets, advanced synchronization, the registry, and Windows security.
Overhead slides and a copy of Windows System Programming, Fourth Edition are provided to all participants.
Text: Windows System Programming, Fourth Edition by Johnson M. Hart, Addison-Wesley, 2010.
Core Modules, with Approximate Times:
Parallelism and Performance - Exploiting Mulitcore Systems (3.5
Advanced Synchronization with Performance Trade-offs (2 Hours)
Windows Sockets and Network Programming (2 Hours)
Registry Programming (2 Hours)
Securing Windows Objects (3.5 Hours)
Asynchronous I/O and I/O Completion Ports (3.5 Hours)
Using the Windows API from C#/.NET Programs - When, Why, and How
- Getting Started with the Windows API (1.5 Hours)
- Input/Output with File and Directory Processing (3.0 Hours)
- Structured Exception Handling (2 Hours)
- Memory Management, Memory Mapped Files, & DLLs (4 Hours)
- Process Management (2 Hours)
- Interprocess and Network Communication (3 Hours)
- Thread Management (3 Hours)
- Synchronization (3.5 Hours)