课程目标与适用问题

这门课针对需要深入 Windows 内核层开发的场景,主要解决在系统编程、驱动开发或性能优化中,如何通过 C++ 直接操作内核对象、处理异步任务等实际问题。如果你在开发需要与 Windows 操作系统底层紧密交互的应用,比如设备驱动、系统工具或需要绕过用户态限制的功能模块,学习这门课能帮你掌握内核级编程的核心方法,理解 Windows 的调度机制和资源管理方式。

学习门槛与核心基础

课程要求学习者具备扎实的 C++ 语言基础,熟悉类、模板、多线程等面向对象编程概念,以及对操作系统有基本的理解,例如进程、线程、内存管理的基本概念。资料中包含的代码和测试案例,适合在掌握 APC(异步处理单元)机制、内核同步对象等核心知识点后,通过运行 Debug 版本的程序来观察内存分配和线程状态,加深理解。建议先学习 APC 相关章节,结合案例代码理解事件与 APC 的交互过程,为后续学习内核同步和对象创建打下基础。

独立应用与资料配合练习

学完后,你可以独立完成基于 C++ 的简单内核模块的设计与实现,包括创建和管理内核线程、调度 APC 任务、使用内核对象进行同步等。资料中的代码片段可作为快速上手模板,通过替换内核函数调用或修改回调逻辑来适配具体的工作需求。建议配合提供的 Debug 版本可执行文件进行验证,观察内核参数的传递和执行流程,利用编译器生成的映射文件(ilk)分析函数调用栈。这些实践能帮你检验对内核编程原理的掌握程度,确保理论知识能有效转化为实际开发能力。

课程目录

课程目录49 集
  • 📁 课件 📁 1-011 1.cpp [1.2 KB] 📁 1-010 1.cpp [1.6 KB] 📁 61 APC的两个问题-
  • 01 EvnetAndApc.cpp [560.0 B] Main.cpp [4.6 KB] APC1.cpp [498.0 B] 📁 Other_Syn 📁 Debug Test_Dlg.exe [150.0 KB] WaitForInputIdle.ilk [312.6 KB] Test_Dlg.exe.manifest [915.0 B] WaitForInputIdle.exe [26.5 KB] WaitForInputIdle.exe.manifest [406.0 B] WaitForInputIdle.pdb [483.0 KB] Test_Dlg.pdb [4.7 MB] Test_Dlg.ilk [950.9 KB] 📁 Other_Syn 📁 Debug Other_Syn.log [1.9 KB] vc100.idb [459.0 KB] vc100.pdb [108.0 KB] link.6044.write.1.tlog [2.0 B] rc.command.1.tlog [1.1 KB] WaitForInputIdle.obj [23.6 KB] link.write.1.tlog [1.2 KB] WaitForInputIdle.exe.embed.manifest.res [472.0 B] CL.read.1.tlog [25.4 KB] WaitForInputIdle.exe.embed.manifest [406.0 B] link.6044-cvtres.write.1.tlog [2.0 B] rc.write.1.tlog [554.0 B] cl.command.1.tlog [1.3 KB] link.6044.read.1.tlog [2.0 B] mt.command.1.tlog [832.0 B] WaitForInputIdle.exe.intermediate.manifest [381.0 B] link.read.1.tlog [4.9 KB] link.6044-cvtres.read.1.tlog [2.0 B] mt.read.1.tlog [562.0 B] WaitForInputIdle.lastbuildstate [40.0 B] mt.write.1.tlog [562.0 B] rc.read.1.tlog [538.0 B] link-cvtres.read.1.tlog [2.0 B] Other_Syn.vcxprojResolveAssemblyReference.cache [707.0 B] link.command.1.tlog [2.7 KB] CL.write.1.tlog [598.0 B] WaitForInputIdle.write.1.tlog WaitForInputIdle_manifest.rc [222.0 B] link-cvtres.write.1.tlog [2.0 B] WaitForInputIdle.cpp [1.1 KB] Other_Syn.vcxproj.user [143.0 B] Other_Syn.vcxproj [3.9 KB] Other_Syn.vcxproj.filters [954.0 B] 📁 ipch 📁 other_syn-83c96b02 waitforinputidle-fbc8bb96.ipch [31.4 MB] 📁 test_dlg-50d268
  • 38 📁 Test_Dlg 📁 res Test_Dlg.ico [66.2 KB] Test_Dlg.rc2 [672.0 B] 📁 Debug rc.command.1.tlog [2.0 KB] CL.read.1.tlog [126.6 KB] rc.write.1.tlog [826.0 B] link.write.1.tlog [1.5 KB] vc100.idb [1.9 MB] Test_DlgDlg.obj [39.2 KB] vc100.pdb [3.3 MB] Test_Dlg.obj [28.4 KB] link-cvtres.read.1.tlog [2.0 B] Test_Dlg.write.1.tlog Test_Dlg.exe.intermediate.manifest [640.0 B] mt.command.1.tlog [1.4 KB] Test_Dlg.res [68.0 KB] rc.read.1.tlog [6.0 KB] cl.command.1.tlog [4.1 KB] mt.write.1.tlog [828.0 B] CL.write.1.tlog [2.0 KB] link.read.1.tlog [8.9 KB] Test_Dlg.exe.embed.manifest [915.0 B] stdafx.obj [624.9 KB] link-cvtres.write.1.tlog [2.0 B] Test_Dlg_manifest.rc [206.0 B] Test_Dlg.pch [32.1 MB] Test_Dlg.log [926.0 B] mt.read.1.tlog [1.1 KB] Test_Dlg.exe.embed.manifest.res [980.0 B] Test_Dlg.lastbuildstate [40.0 B] link.command.1.tlog [2.8 KB] Test_Dlg.rc [9.4 KB] Test_Dlg.aps [87.4 KB] Test_Dlg.vcxproj.user [143.0 B] Test_Dlg.cpp [2.0 KB] stdafx.cpp [141.0 B] targetver.h [234.0 B] Test_Dlg.h [454.0 B] Resource.h [515.0 B] Test_DlgDlg.h [572.0 B] ReadMe.txt [3.1 KB] stdafx.h [1.6 KB] Test_DlgDlg.cpp [3.0 KB] Test_Dlg.vcxproj [5.7 KB] Test_Dlg.vcxproj.filters [1.9 KB] Other_Syn.sdf [82.1 MB] Other_Syn.suo [14.5 KB] Other_Syn.sln [1.3 KB] 📁 1-02 1.cpp [3.4 KB] 📁 基础限制-
  • 01 基础限制.cpp [1.2 KB] 📁 1-03 1.cpp [3.6 KB] 📁 1-06 1.cpp [2.0 KB] 📁 1-07 1.cpp [2.3 KB] 📁 1-04 1.cpp [1.6 KB] 📁 1-012 1.cpp [6.7 KB] 📁 1-05 1.cpp [3.8 KB] 📁 1-09 1.cpp [5.1 KB] 📁 1-01 1.cpp [3.1 KB] 📁 65 WCT等待环-
  • 01 测试程序.cpp [1.1 KB] 环.cpp [2.8 KB] 📁 54 内核同步对像初步-01 2.cpp [1.1 KB] 1.cpp [777.0 B] 📁 53 关键区2-
  • 01 Critical.h [462.0 B] Spin.cpp [361.0 B] Spin.h [122.0 B] Main.cpp [460.0 B] Critical.cpp [2.8 KB] 📁 1-08 1.cpp [1.8 KB] 📁 Timer-
  • 01 Timer.cpp [6.0 KB] 📁 52 关键区1-
  • 01 Spin.h [122.0 B] Critical.h [330.0 B] Critical.cpp [1.2 KB] Main.cpp [460.0 B] Spin.cpp [361.0 B] 线程调度-以及线程同步原理-01.docx
  • [21.3 KB] 40.调试事件_ev.mp4
  • [108.3 MB] 38.等待进程空闲_ev.mp4
  • [23.1 MB] 6.作业通知的接收1_ev.mp4
  • [114.2 MB] 25.线程优先级和同步原理_ev.mp4
  • [107.7 MB] 16.线程优先级和线程上下文切换_ev.mp4
  • [101.0 MB] 34.信号灯_ev.mp4
  • [90.6 MB] 3.如何给作业中的进程施加限制_ev.mp4
  • [206.0 MB] 32.互斥内核对象_ev.mp4
  • [146.1 MB] 1.作业概念初步_ev.mp4
  • [161.3 MB] 23.带自旋锁的关键区_ev.mp4
  • [121.8 MB] 8.作业通知的接收2_ev.mp4
  • [135.2 MB] 17.线程暂停_ev.mp4
  • [82.1 MB] 35.APC初步_ev.mp4
  • [92.0 MB] 12.CreateThread和beginthread_ev.mp4
  • [169.4 MB] 26.自旋同步_ev.mp4
  • [59.2 MB] 33.防止互斥内核对象出现abandoned的方法_ev.mp4
  • [94.9 MB] 39.WCT等待环_ev.mp4
  • [119.4 MB] 31.WaitForMultipleObjects函数_ev.mp4
  • [86.5 MB] 36.APC的两个问题_ev.mp4
  • [98.1 MB] 30.事件同步对象_ev.mp4
  • [122.1 MB] 4.作业中的基本限制_ev.mp4
  • [143.8 MB] 15.API函数和C语言库函数混合使用的问题_ev.mp4
  • [116.6 MB] 22.关键区_ev.mp4
  • [140.5 MB] 24.slim读写锁和条件变量_ev.mp4
  • [161.2 MB] 9.其他一些杂项_ev.mp4
  • [152.1 MB] 37.时钟内核对象_ev.mp4
  • [156.0 MB] 20.CPU的几个概念_ev.mp4
  • [72.4 MB] 14.伪句柄和真是句柄_ev.mp4
  • [62.7 MB] 10.线程初步_ev.mp4
  • [85.6 MB] 28.关键区2_ev.mp4
  • [83.3 MB] 5.作业中的安全限制_ev.mp4
  • [108.4 MB] 13.API函数和C语言函数_ev.mp4
  • [157.9 MB] 11.线程创建_ev.mp4
  • [138.9 MB] 21.原子操作函数interlocked系列函数_ev.mp4
  • [164.2 MB] 7.作业中的UI限制_ev.mp4
  • [128.5 MB] 29.内核同步对像初步_ev.mp4
  • [100.9 MB] 19.设置线程和进程的cpu_ev.mp4
  • [105.0 MB] 27.关键区1_ev.mp4
  • [122.0 MB] 2.子进程不加入默认父进程所在作业的办法_ev.mp4
  • [90.3 MB] 18.windows系统抽象优先级和线程优先级关系_ev.mp4
  • [131.2 MB] 适合人群 编程爱好者 Windows开发工程师 学习收获 掌握Windows编程基础 提升C++编程能力 深入理解系统架构 祝您学习愉快! 学有所成,前程似锦!