About | Forum | Gallery | News | Order the XPT | Products | Rants | Security | Services | Workshop
Home » Services » Courses

Product Sheet: Windows System Programming

Radsoft offer professional in-house, onsite, and online courses in a number of subjects including Win32 system programming, Win32 GUI programming, and remedial courses in the C programming language. Current venues include northern Europe, Scandinavia, Australia, and the Far East.


Admission to the online course 'Win32 System Programming' is pursuant to the applicant demonstrating the necessary prerequisites to complete the course.


The in-house and onsite courses follow a strict curriculum and require four full days of study. The online course is paced with very reasonable time limits. In all cases it is of vital importance that all students fully master previous materials before moving on.

Fees & Payment

Payment is made in full before the start of the course by wire transfer only.


The course teaches the basics of Windows NT programming from the system perspective. It is comprehensive. After completing the course the student will be able to write sophisticated programs utilising the full power of the Windows NT system API.



  • Background, overview, design goals
  • Layered architecture and protected subsystems
  • NT Executive
  • Memory management, logical virtual and physical memory, Virtual Memory Manager
  • The NT object model, Object Manager
  • The NT process model, Process Manager
  • Installable File Systems, I/O Manager
  • Access controls, network security
  • HAL & the kernel
  • Win32 and its kernel components
  • NTFS, transactions, rollback, security, autocompression, clustering
  • Network programming, named pipes, mailslots, RPC, sockets, RAS

Processes & Threads

  • Processes: a definition
  • Processes and inheritance
  • Thread contexts, priority classes, thread priorities, quanta, time slices, context switches
  • Creating a thread
  • Creating a process
  • Thread exit codes, error management

Memory Management

  • Virtual memory essentials
  • VirtualMemory API, locking memory
  • Heap API
  • Global/Local API
  • RTL functions and 'why not'
  • Reserving vs. committing memory

Shared Memory & File Mapping

  • A file mapping cookbook
  • CreateFile, CreateFileMapping
  • MapViewOfFile, UnmapViewOfFile
  • File mapping without files
  • Rules of the Object Manager namespace
  • Based pointers


  • Resource conflicts, polling loops
  • NT's synchronisation mechanisms
  • Critical sections
  • Signaled/non-signaled objects
  • Non-dedicated synchronisation objects
  • Files, processes, threads
  • Dediccated synchronisation objects
  • Change notifications, events, mutexes, semaphores, waitable timers
  • Demo: mutexes & semaphores, directory management with change notifications

Dynamic Linking

  • Static vs. dynamic linking
  • The entry point
  • LoadLibrary, GetProcAddress
  • Bind, Rebase
  • The module definition file
  • Storage class modifiers
  • Shared DLL memory
  • Thread local storage

Overlapped I/O

  • High performance I/O, guidelines
  • ReadFileEx, WriteFileEx
  • FileIOCompletionRoutine

Named Pipes

  • Anonymous pipes, named pipes
  • Using anonymous pipes
  • Characteristics of named pipes
  • Named pipes & security
  • Client/server control flow
  • Synchronisation on connect and with I/O
  • Multithreaded named pipe servers


  • Control flow
  • RPC standards, Microsoft RPC, MIDL
  • Writing a simple RPC client/server system
  • Callbacks
  • IDL files
  • ACF files


  • Startup & cleanup
  • Binding, address resolution
  • Select, Accept, Connect
  • Error management

The Registry

  • Architectural basics
  • Root keys, hives
  • Repair Disk utility
  • Persistent storage cookbook

Structured Exception Handling

  • __try, __except
  • Termination handlers
  • Exception filters

Course materials include full source to tutorials and solutions.

About | Buy | News | Products | Rants | Search | Security
Copyright © Radsoft. All rights reserved.