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
Admission to the online course 'Win32 System Programming' is pursuant to the applicant demonstrating the necessary prerequisites to complete the course.
Pace
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.
Objectives
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.
Curriculum
Introduction
- 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
- PROCESS_INFORMATION & STARTUPINFO
- 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
Synchronisation
- 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
RPC
- Control flow
- RPC standards, Microsoft RPC, MIDL
- Writing a simple RPC client/server system
- Callbacks
- IDL files
- ACF files
Sockets
- Startup & cleanup
- Binding, address resolution
- Select, Accept, Connect
- Error management
The Registry
- Architectural basics
- Root keys, hives
- Repair Disk utility
- HKEY_LOCAL_MACHINE
- HKEY_CURRENT_USER
- Persistent storage cookbook
Structured Exception Handling
- __try, __except
- Termination handlers
- Exception filters
|
Course materials include full source to tutorials and solutions.
|