Windows Kernel Programming 1 Course Trainsec

Windows Kernel Programming 1: Driver Development Course

Learn to write, debug and deploy Windows kernel drivers from scratch. Pavel Yosifovich, author of Windows Kernel Programming and co-author of Windows Internals, takes you from kernel debugging with WinDbg through IRPs, IRQLs and synchronization to process, thread, object and registry callbacks: the mechanisms EDR and monitoring tools are built on.

74 Lessons | Community Access
Lifetime access
$690
or $103 x 7 installments
blue depth
Windows master developer badge 1

This course is part of Windows Master Developer

$1,478 or $150 X 10 installments
Trusted by 10K+ students and companies
Sentinel one logo white
microsoft logo white
google logo white
mandiant logo white
intel logo white
cisco white logo tr
citibank logo white
alfa bank logo white
malwarebytes logo white
proofpoint logo white
epam logo white
Sentinel one logo white
microsoft logo white
google logo white
mandiant logo white
intel logo white
cisco white logo tr
citibank logo white
alfa bank logo white
malwarebytes logo white
proofpoint logo white
epam logo white

26+ hours

on-demand video

Labs

with full solution walkthroughs

71

video lessons

3

downloadable resources

21 CPE

CEU credits, self-reported

Certification

Certificate of completion

Windows Kernel Programming: build real drivers, step by step

Some things can only be done from the Windows kernel: seeing every process and thread as it starts, blocking a handle to a protected process, watching every registry change, or giving a product privileged access the user-mode API does not allow. That is why security products, monitoring tools and many system utilities ship a kernel driver. Writing one is also unforgiving: a single mistake at the wrong IRQL brings the whole machine down.

In this course Pavel Yosifovich, author of the book Windows Kernel Programming and co-author of Windows Internals, teaches you to write software kernel drivers properly. You start with a Windows internals refresher and kernel debugging with WinDbg, then learn the I/O system and how user-mode clients talk to drivers. From there you build drivers step by step: the Booster driver with its client, IRP handling and safe access to user buffers, interrupts, IRQLs and crash dump analysis, kernel synchronization, system threads and timers, and finally a Process Monitor style driver using process, thread, image, object and registry notifications.

The course is a recording of a five-day live class: 71 video lessons in 12 modules, with a labs PDF, the slides and the full sample code. Most modules end with a lab you write yourself, followed by a complete solution walkthrough, and every driver is deployed and debugged on a virtual machine. All videos have English captions, and you learn at your own pace with lifetime access.

Pavel Yosifovich
Developer, trainer, author and (sometimes) speaker. Co-founder of TrainSec academy.

Pavel is the author of the books “Windows Kernel Programming” (2nd edition) and “Windows Native API Programming”, co-author of “Windows Internals, 7th Edition, Part 1” (Microsoft Press), and a Microsoft MVP. With more than 25 years as a developer, consultant and trainer, he has taught Windows internals, system and kernel programming to developers and security teams around the world.

In this course he teaches driver development the way he practices it: build the driver, deploy it to a VM, debug it in WinDbg, and understand exactly why each kernel rule exists.

What you will learn in the Windows Kernel Programming 1 course

Who is this Windows kernel driver development course for?

  • C and C++ developers on Windows who want to move from user mode into kernel driver development.
  • Security engineers building monitoring or prevention agents with process, thread, image, object and registry callbacks.
  • Developers who need a software driver as the privileged half of a Windows product, with a user-mode client talking to it.
  • Security researchers who want to understand kernel objects, IRQLs, IRPs and callbacks by building them.
  • Engineers who know the Windows API and now need kernel debugging with WinDbg as a working skill.

Not the right fit if you are new to C, C++ or the Windows API (start with Modern C++ Programming and Windows System Programming 1), or if you write hardware drivers that need real interrupts, DMA or USB: this course builds software drivers.

Roles this course prepares you for: Windows developers and security researchers.

What do you need before you start?

  • Solid C and working C++ (classes, templates and RAII). The sample drivers are written in C++.
  • Familiarity with the user-mode Windows API, such as CreateFile, ReadFile, WriteFile and DeviceIoControl.
  • Basic understanding of processes, threads and virtual memory. The first module is a refresher, not a first introduction.
  • No prior kernel or driver experience is needed.
  • A Windows 10 or 11 PC with Visual Studio 2022 and the Windows Driver Kit, plus a Windows 10 or 11 virtual machine (at least 8 GB RAM and 40 GB disk) for deploying and debugging drivers.

What does the Windows kernel programming course cover?

Windows kernel programming is a niche skill with outsized value. The same kernel mechanisms are used by endpoint security products, system monitoring tools, virtualization and backup software, and by attackers trying to hide from all of them. This course gives you the foundation: the internals, the debugging skills and the driver development practices that every later topic builds on.

Each module mixes slides, live coding and debugging, and most end with labs and a full solution walkthrough. The course covers modules 1 to 7 of the live class. File system mini-filters, more advanced techniques and an introduction to KMDF continue in Windows Kernel Programming 2.

Why learn Windows kernel driver development?

Kernel drivers see and control what user-mode code cannot: process and thread creation, image loads, handle access and registry operations across the whole system. EDR and antivirus agents, parental control and DLP products, and many Sysinternals-style tools rely on exactly the callbacks you build in this course. Understanding them makes you a better driver developer, and a better security researcher when you need to know what a security product can and cannot see.

Learn by building, deploying and debugging real drivers

This is not a theory course. You write the Booster driver and its client, the Zero driver, a Process Revealer driver and a three-part Process Monitor driver with a console client, then deploy each one to a test virtual machine. Along the way you learn the kernel debugger as a working tool: setting breakpoints in your driver, debugging over the network and analysing crash dumps when something goes wrong. If you want to go further into security, EDR Internals builds directly on these skills.

What does each chapter of the course cover?

Introduction

Meet the course and its instructor: the goals, the prerequisites, how the labs work, and recommended books and sites. The labs PDF, the slides and the full sample code are available here. This course covers modules 1 to 7 of the live class; modules 8 to 10 (mini-filters and more) are part of Windows Kernel Programming 2.

Windows Internals Overview

A Windows internals refresher aimed at driver writers. It covers processes, virtual memory and the address space layout, free, reserved and committed memory, threads, priorities and scheduling, and the overall architecture from the subsystem DLLs through NtDll and system calls into the executive and the kernel. Demonstrations use Task Manager, Process Explorer and VMMap.

Introduction to WinDbg

The debugger every driver developer lives in. You start with WinDbg in user mode on Notepad: threads, call stacks, breakpoints on CreateFile and NtCreateFile, handles and symbol configuration. A lab sets up user-mode and local kernel debugging, and the module then moves to kernel structures such as EPROCESS and ETHREAD, and editing kernel memory with the debugger.

Handles and Objects

How the kernel manages objects: reference counting, object types, handle tables and access rights, and how to inspect them with Process Explorer, Object Explorer and WinDbg. It covers the ways to share objects (inheritance, names and duplication), the kernel APIs for going from handles to objects and back, and the object manager namespace with session-local and global names.

The I/O System

How user-mode code talks to drivers. The module introduces the I/O manager, IRPs, Plug and Play and the power manager, the driver models (WDM, KMDF and UMDF), and opening devices with CreateFile and symbolic links, or without a symbolic link using NtOpenFile. It ends with ReadFile, WriteFile and DeviceIoControl, including asynchronous I/O.

Device Driver Basics

The full driver development cycle. You learn how kernel code differs from user-mode code, Zw versus Nt functions, NTSTATUS and UNICODE_STRING, DriverEntry and DriverUnload, and allocating pool memory with tags. Then you install and load a driver with sc.exe, read its output with DebugView, check its memory with PoolMon, enable test signing and look at the Services registry key. The module closes with asserts and tracing, object attributes, and driver and device objects.

The Booster Driver

Your first complete driver and client, built end to end. The console client sends a request with CreateFile and WriteFile, and the WDM driver creates a device object and symbolic link, handles create, close and write requests, and changes a thread’s priority. You deploy it to a virtual machine and debug it remotely with WinDbg over the network, including source-level debugging of the driver.

The I/O Request Packet (IRP)

The IRP in depth: its structure and I/O stack locations, dispatch routines, and completing requests with the right status and information. You learn to access client buffers safely with Buffered I/O, Direct I/O with MDLs, and Neither I/O, and how the control code selects the method for DeviceIoControl. The labs are the Zero driver and a Process Revealer driver, followed by a full solution walkthrough.

Interrupts and Exceptions

The kernel mechanisms that make driver code different. You learn how hardware interrupts are dispatched, what the IRQL is and how it limits what your code may do, DPCs as deferred interrupt work, and structured exception handling in drivers. The module ends with the blue screen: configuring crash dumps and analysing them in WinDbg with !analyze.

Synchronization

Keeping driver data consistent when code runs on many CPUs at once. The module covers data races and Interlocked operations, dispatcher objects and waiting, and every kernel lock in turn: mutex, fast mutex, semaphore, event, executive resource and spin lock, with the IRQL rules for each. You will wrap them in a C++ RAII Locker template, and learn about APCs and critical and guarded regions. It includes a Q&A session on driver signing.

Threads and Timers

Running work outside the caller’s context: creating system threads, queueing work items to the system thread pool, and using I/O timers and kernel timers. The module stresses keeping the driver referenced so it cannot unload while its code is still running.

Process and Thread Monitoring

Build a Process Monitor style driver. You register process, thread and image load notification callbacks (and see how a driver can block process creation), design the event data shared with user mode, store events in a synchronized linked list, and write the console client that reads and displays process and thread create and exit records.

Object and Registry Notifications

Two notification mechanisms that let a driver observe and change what happens on the system. Object notifications monitor and modify handle opens to processes and threads, for example to protect a process from being terminated. Registry notifications let a driver observe or block registry operations. The module includes a walkthrough of the complete Process Monitor driver and exercises for a process protector and registry monitoring.

Windows kernel programming course: frequently asked questions

Do I need prior kernel or driver experience?

No. This is the entry point into Windows kernel development, and it starts with an internals refresher and an introduction to WinDbg. You do need solid C, working C++ and familiarity with the user-mode Windows API.

How much C++ do I need?

Enough to write classes, use templates and understand RAII. The sample drivers are written in C++, and the synchronization module wraps kernel locks in a C++ RAII template. If your C++ is rusty, take Modern C++ Programming first.

What setup do I need for the labs?

Windows 10 or 11 with Visual Studio 2022 and the Windows Driver Kit, plus a Windows 10 or 11 virtual machine (at least 8 GB RAM and 40 GB disk) you can switch into test signing mode and attach a kernel debugger to. The recordings use Hyper-V, and one module sets up kernel debugging over the network. The sample code from Pavel’s Windows Kernel Programming book is on GitHub.

Is this a hardware driver course?

No. The course builds software kernel drivers: drivers that monitor, control or extend Windows rather than talk to a physical device. Hardware specifics such as DMA, USB and real device interrupts are out of scope.

Does the course teach WinDbg?

It teaches WinDbg as a working tool: user-mode debugging, symbols and breakpoints, inspecting kernel structures, local and remote kernel debugging, and crash dump analysis. For the debugger as a subject in its own right, see Mastering WinDbg.

Is this an EDR or security course?

It is a driver development course, but it teaches the kernel mechanisms security products are built on: process, thread and image callbacks, object callbacks that can block handle opens, and registry callbacks. EDR Internals builds on these skills for security research and EDR development.

What is not covered?

File system mini-filters, KMDF, Windows Filtering Platform callouts and Plug and Play filter drivers. Mini-filters and an introduction to KMDF are in Windows Kernel Programming 2, and the rest in Advanced Windows Kernel Programming.

Is the course live or recorded?

Recorded and self-paced. It is a recording of a five-day live class, so you will hear student questions and Q&A sessions. You get lifetime access, and every video has English captions.

What should I take after this course?

Windows Kernel Programming 2 is the direct continuation, followed by Advanced Windows Kernel Programming. The course is also part of the Windows Master Developer learning path.

Do I get a certificate?

Yes. When you complete every lesson you receive a certificate of completion and a Credly digital badge. The course also earns 21 CPE/CEU credits, which you self-report to your certification body using your certificate.

Can I watch part of the course before buying?

Yes. Two lessons are free to preview: Introduction and Processes. Watch them on the course page.

How long does the course take?

There are 71 video lessons, more than 26 hours of video. Most modules end with labs you write yourself, so plan for considerably more time than the video length.

How much does it cost, and is there a payment plan?

$690 as a single payment, or 7 monthly payments of $103 ($721 in total).

Can I get a refund?

Yes. Refunds are available up to 14 days after purchase, to the original payment method. Email [email protected].

Pavel Yosifovich
Developer, trainer, author and (sometimes) speaker. Co-founder of TrainSec academy.

Pavel is the author of the books “Windows Kernel Programming” (2nd edition) and “Windows Native API Programming”, co-author of “Windows Internals, 7th Edition, Part 1” (Microsoft Press), and a Microsoft MVP. With more than 25 years as a developer, consultant and trainer, he has taught Windows internals, system and kernel programming to developers and security teams around the world.

In this course he teaches driver development the way he practices it: build the driver, deploy it to a VM, debug it in WinDbg, and understand exactly why each kernel rule exists.

Windows Kernel Programming 1 Course Trainsec
Windows Kernel Programming 1
$690 or 7 × $103

Learn to write, debug and deploy Windows kernel drivers from scratch. Pavel Yosifovich, author of Windows Kernel Programming and co-author of Windows Internals, takes you from kernel debugging with WinDbg through IRPs, IRQLs and synchronization to process, thread, object and registry callbacks: the mechanisms EDR and monitoring tools are built on.