先判断:这套课适合谁,不适合谁

如果你的日常工作要跟 Windows 系统本身打交道——比如写进程监控工具、做文件过滤驱动的前置准备、排查句柄泄漏、给现有 C++ 项目补一层 MFC 界面,或者你正在从应用层往系统层转——那这套课的内容是对口的。它讲的是 Windows 平台本身的机制,不是某一门语言语法,也不是某个框架的快速上手。

但如果你目前连 C++ 的基本语法和指针都还不熟,或者你只是想学一门能立刻投简历找工作的技能,这套课会让你很吃力。它默认你已经写过能跑的 Windows 程序,知道怎么用 Visual Studio 建工程、调断点,只是对「为什么程序会这样运行」没有系统认识。零基础直接进来,大概率卡在数据类型和句柄概念上就停了。

课程实际覆盖的工作场景

这套课的主线是把 Windows 编程的几个层次拆开讲清楚:NT 架构、WinAPI、SDK、MFC。它解决的不是「怎么写一个窗口」,而是当程序出问题时,你能定位到是哪一层的原因。

具体来说,学完后你能处理这些场景:进程和线程的创建、同步、通信,不再只是调用 CreateThread 了事,而是知道线程调度和内核对象之间的关系;文件系统的操作,从 Win32 API 到内核对象句柄的对应;R0 和 R3 的边界在哪里,用户态调用怎么进到核心态,为什么有些 API 在旧系统上要「向下兼容」实现。这些都是排查真实问题时绕不开的底层常识。

学完能独立做什么

按课程的设计,学完结合项目练习,你应该能独立完成一个中等规模的 Windows 本地程序:自己设计进程结构、管理多线程同步、操作文件和设备、用 MFC 搭出可用的界面层。更实际的一点是,你会具备读 MSDN 文档的能力——看到一个新 API,能判断它属于哪一类服务、运行在哪个态、依赖哪些句柄和结构体。

需要说明的是,这套课的名称里有 NT,但它不是驱动开发课,不会带你写内核驱动。NT 结构部分是为理解用户态行为服务的背景知识,不是让你直接进内核。如果你的目标是驱动开发,这套课是前置,不是全部。

资料结构和使用建议

资料按主题分块组织,NT 结构、Windows API、SDK、MFC、API 分类各自独立。不建议从第一个视频顺着看到最后一个,那样容易在 NT 结构部分失去耐心——这部分概念密度高,但暂时用不上。

  • 有 MFC 项目经验的,可以先从进程线程和 WinAPI 切入,回头再补 NT 结构。
  • 纯做后台服务、不碰界面的,MFC 部分可以跳过,不影响主线理解。
  • API 分类那块建议边看边在 MSDN 上对照,课程给的是分类逻辑,具体参数以官方文档为准。
  • 数据类型和句柄部分不要快进,这是后面所有内容的基础,这里含糊后面会更乱。

整体看,这是一套需要边看边动手的课,光看视频不写代码,收获会打对折。建议每学完一块,自己写一个小程序验证,哪怕只是打开进程、读一个文件属性。基础够、目标明确的人,这套资料值得花时间;基础不够的,先补 C++ 和 Win32 入门再来。

课程目录
课程目录83 集
  • 01 windows简介
  • 01 windows版本变迁.mp4
  • 02 NT结构.mp4
  • 02 编程语言和Windows
  • 01 API&SDK&MFC.mp4
  • 02 WindowsAPI分类.mp4
  • 03 如何使用windowsAPI.mp4
  • 03 数据类型&字符编码
  • 01 Windows基础数据类型.mp4
  • 02 字符集.mp4
  • 04 库存管理系统
  • 01 项目简介.mp4
  • 02 项目界面演示.mp4
  • 03 IO操作.mp4
  • 04 文件操作.mp4
  • 05 windows消息机制.mp4
  • 06 项目预备.mp4
  • 07 项目开始.mp4
  • 08 异步IO机制.mp4
  • 09 使用事件内核对象提醒.mp4
  • 10 可提醒IO.mp4
  • 11 完成端口概述.mp4
  • 12 IOCP初窥.mp4
  • 13 CopyFile实现.mp4
  • 14 课程安排及答疑.mp4
  • 15 界面知识点完成.mp4
  • 05 进程
  • 01 进程及线程.mp4
  • 02 CUI&GUI.mp4
  • 03 进程句柄.mp4
  • 04 命令行参数.mp4
  • 05 环境变量.mp4
  • 06 进程路径.mp4
  • 07 createProcess概述.mp4
  • 08 ApplicationName&CommandLine详解.mp4
  • 09 StrartInfo及ProcessInformation.mp4
  • 10 作业讲解及进程关闭及使用计数.mp4
  • 11 进程权限概论.mp4
  • 12 进程权限.mp4
  • 13 UAC及用户补充.mp4
  • 14 进程复习.mp4
  • 15 项目相关预习及进程的遍历.mp4
  • 16 封装ToolHelp类.mp4
  • 06 线程
  • 01 线程知识.mp4
  • 02 主线程退出和其他线程退出的区别.mp4
  • 03 线程间参数传递.mp4
  • 04 深入理解时间片.mp4
  • 05 线程的退出.mp4
  • 06 深入理解线程的启动.mp4
  • 07 课程复习.mp4
  • 08 线程启动到死亡的详细讲解.mp4
  • 09 beginthread和CreateThread.mp4
  • 10 线程的状态及线程的挂起转态.mp4
  • 11 线程等待休眠及饥饿线程.mp4
  • 12 context结构体.mp4
  • 13 线程安全及上锁.mp4
  • 14 原子操作.mp4
  • 15 旋转锁.mp4
  • 16 volatile关键字.mp4
  • 17 问题线程函数分析之-详解线程函数的lParam.mp4
  • 18 问题线程函数分析之-详解原子操作和旋转锁.mp4
  • 19 线程优先级及CPU亲和度.mp4
  • 20 答疑-关于异步IO及句柄,伪句柄.mp4
  • 21 临界区及线程函数中使用静态变量.mp4
  • 22 Slim锁及线程休眠及等待及挂起及阻塞.mp4
  • 23 用户态同步方式总结.mp4
  • 07 内核对象
  • 01 内核对象概述.mp4
  • 02 设置使用计数的目的.mp4
  • 03 设置使用计数的目的及句柄表及句柄的本质.mp4
  • 04 深入理解句柄表及索引及句柄表存在的意义.mp4
  • 05 内核对象的Signal状态.mp4
  • 06 Wait的3种结果及Wait里的坑.mp4
  • 07 事件内核对象.mp4
  • 08 可等待计时器对象.mp4
  • 09 信号量.mp4
  • 10 互斥体.mp4
  • 11 程序单开应用.mp4
  • 08 内存
  • 01 虚拟内存.mp4
  • 02 虚拟内存分区.mp4
  • 03 分配颗粒及页面大小.mp4
  • 04 页面文件及提交物理内存.mp4
  • 05 64位及内存对齐.mp4
  • 06 内存修改器作业布置.mp4
  • 07 作业讲解.mp4
  • 08 虚拟内存页面区块.mp4
  • 09 动态获取系统内存信息.mp4
  • 10 获取系统内存大小及空闲内存.mp4
  • 11 Windows基础知识总结及实战课程安排.mp4