《Windows核心编程》源码实战:解决系统级开发中的底层契约问题
简介本资源是《Windows核心编程第五版》配套源码包面向C/C中级开发者、系统编程学习者及Windows平台软件工程师旨在通过可运行的工程实践深入理解Windows API机制与底层系统行为。压缩包共240个文件含52个头文件h、40个C源码cpp、76个Visual Studio工程文件vcproj/vcxproj、33个资源脚本rc及图标等辅助资源整体仅342KB轻量紧凑且结构清晰便于在Visual Studio中直接加载调试。已有1205人学习下载反映出其在系统级开发入门与进阶中的广泛认可。读者可获得涵盖进程线程管理、虚拟内存操作、文件I/O、窗口消息循环、同步对象Mutex/Event/Semaphore、异常处理及设备交互等核心模块的完整示例代码如ProcessInfo.cpp、APIHook.cpp、VMMap.cpp等均体现典型应用场景是理论结合实战、快速掌握Windows内核级编程能力的优质实践素材。1. 这不是一本“翻完就扔”的编程书《Windows核心编程第五版》源码到底在解决什么实际问题你手头有一本标着“第五版”的《Windows核心编程》书脊烫金、页脚微卷但光看书名和目录很容易误以为这是本讲Win32 API调用列表的“API字典”。错。它真正锚定的是Windows用户态系统级开发中那些绕不开、改不了、一碰就崩的底层契约——比如为什么CreateFile打开同一个文件两次第二次却返回INVALID_HANDLE_VALUE为什么WaitForMultipleObjects在等待100个句柄时突然超时而调试器里根本没看到线程挂起为什么用VirtualAlloc申请的内存在任务管理器里不显示为“工作集”却实实在在占用了物理页这些不是玄学是Windows内核与用户态运行时之间那层薄如蝉翼、硬如钢板的交互协议。本书源码不是教学玩具而是把书中所有关键模型——进程/线程生命周期、作业对象调度、I/O完成端口的队列行为、结构化异常处理SEH在x64下的栈展开逻辑、临界区与SRW锁的性能分水岭——全部用可编译、可断点、可修改的C/C代码具象化。它适合两类人一类是正在啃Windows驱动或安全工具开发的工程师需要确认自己对NtQueryInformationProcess返回字段的理解是否和内核真实行为一致另一类是带团队做高性能服务端的架构师必须在上线前验证IOCP模型在2000并发连接下的完成包投递顺序是否真如文档所写。它不教你怎么写Hello World它教你怎么写一个不会在凌晨三点被客户电话叫醒的Windows服务。2. 源码结构解剖从压缩包到VS工程5步还原作者原始构建意图拿到“Windows核心编程(第五版)源码”这个标题第一反应常是去哪下怎么编会不会缺头文件其实这本书配套源码的组织逻辑非常清晰——它不是按章节编号打包而是按技术模块典型错误复现场景分组。官方原版注意非扫描PDF附赠包而是出版社官网提供的原始ZIP解压后共含7个主目录其中Common是所有示例共享的基础库含DebugMsg、ErrorHandling等跨平台兼容封装Chapter08对应“进程环境块与PEB操作”Chapter16专攻“异步I/O与完成端口”而最易被忽略的是Errata目录——这里存放着第五版印刷后发现的3处关键代码逻辑修正比如某处WaitForSingleObject超时值误写为INFINITE会导致示例永远阻塞。2.1 解压与目录校验先确认你拿到的是“活”的源码不是PDF截图转的伪代码提示不要直接双击ZIP里任意.sln文件Visual Studio会尝试用当前默认工具链加载而本书源码明确要求使用Visual Studio 2019v16.11.x或更高版本且需启用C17标准支持。低版本VS打开会报shared_mutex缺失等错误。# 推荐用PowerShell执行校验管理员权限非必需但能避免路径权限干扰 Get-ChildItem -Path .\WindowsCoreProgramming5th\ -Directory | ForEach-Object { $dirName $_.Name $slnCount (Get-ChildItem $_.FullName\*.sln -ErrorAction SilentlyContinue).Count Write-Host [$dirName] 包含 $slnCount 个解决方案文件 }输出应类似[Common] 包含 0 个解决方案文件 [Chapter04] 包含 1 个解决方案文件 [Chapter16] 包含 1 个解决方案文件 [Errata] 包含 1 个解决方案文件若Common目录下出现.sln或某章目录下有多个.sln说明你下载的是被二次打包的非官方版本后续编译极大概率失败。此时应回到人民邮电出版社官网或OReilly原站重新获取SHA256校验值匹配的原始包官方包大小恒为28.4 MB含Readme.txt明确标注VS版本要求。2.2 工程重定向为什么不能直接编译ChapterXX.sln三步绑定Common依赖Chapter16\IOCPDemo.sln这类工程看似独立实则强依赖Common目录下的静态库项目CommonLib.vcxproj。但VS默认不会自动识别这种跨目录引用——它只认同一解决方案内的项目依赖。常见错误是直接编译IOCPDemo报错LNK2019: unresolved external symbol DebugMsgA。正确做法是先加载Common\CommonLib.vcxproj在VS中“文件→打开→项目/解决方案”选中CommonLib.vcxproj等待其加载完成状态栏显示“已加载”再添加Chapter工程右键解决方案资源管理器顶部的“解决方案‘CommonLib’(1个项目)”选择“添加→现有项目”浏览至Chapter16\IOCPDemo.vcxproj手动设置项目依赖右键IOCPDemo项目→“项目依赖项”勾选CommonLib再右键IOCPDemo→“属性→常规→配置类型”确认为“应用程序(.exe)”。参数说明这三步本质是在VS内部重建了CommonLib.lib的生成路径与链接顺序。CommonLib项目属性中配置属性→常规→输出目录默认为$(SolutionDir)lib\$(Configuration)\而IOCPDemo的附加库目录需指向此处。手动设置依赖后VS会在编译IOCPDemo前自动触发CommonLib构建并将生成的CommonLib.lib注入链接器输入。2.3 编译前必调的3个关键配置项避开90%的“明明代码没错却编译失败”即使目录结构正确、依赖设置无误仍有三个隐藏开关决定编译成败配置项路径右键项目→属性必须值原因说明字符集配置属性 → 常规 → 字符集使用Unicode字符集Windows核心API如CreateFileW、MultiByteToWideChar默认要求宽字符设为“未设置”会导致L\\\\.\\PhysicalDrive0字符串无法解析子系统链接器 → 系统 → 子系统控制台(/SUBSYSTEM:CONSOLE)所有示例均含wprintf输出若设为“Windows(/SUBSYSTEM:WINDOWS)”会导致main入口找不到需改用WinMain运行时库C/C → 代码生成 → 运行时库多线程调试DLL(/MDd) 或 多线程DLL(/MD)CommonLib中使用了std::thread和std::mutex静态链接/MT会与CRT动态库冲突引发abort()调用// 验证配置是否生效在IOCPDemo.cpp开头加此段编译后运行应输出Unicode OK #include windows.h #include stdio.h int main() { WCHAR test[] L测试; wprintf(LUnicode OK: %s\n, test); return 0; }若输出乱码或崩溃立即检查“字符集”配置——这是新手最常卡住的点比代码逻辑错误更隐蔽。3. 从“能跑通”到“真理解”用调试器逆向追踪3个经典示例的内核交互路径源码的价值不在编译通过而在可断点、可单步、可观察内存变化。下面以Chapter08\ProcessEnvironmentBlock为例演示如何用VS调试器穿透到Windows内核语义层。3.1 PEB结构体地址获取为什么GetModuleHandle(NULL) 0x30不是永远可靠书中P127示例用GetModuleHandle(NULL)获取ntdll.dll基址再加偏移0x30读取PEB指针。但现代WindowsWin10 20H1启用了PEB Randomization该偏移在不同进程、甚至同一进程多次启动时可能变化。正确做法是通过NtCurrentTeb()-ProcessEnvironmentBlock获取// Chapter08\PEBDemo.cpp 修改片段替换原书硬编码偏移 #include winternl.h #pragma comment(lib, ntdll.lib) int main() { // ✅ 安全获取PEB地址TEB结构固定位于FS:[0x30]x64为GS:[0x60] PEB* ppeb NtCurrentTeb()-ProcessEnvironmentBlock; // ❌ 危险硬编码偏移原书P127写法仅适用于旧版Windows // HMODULE hNtdll GetModuleHandle(Lntdll.dll); // PEB* ppeb *(PEB**)((BYTE*)hNtdll 0x30); wprintf(LPEB地址: 0x%p\n, ppeb); wprintf(LImageBaseAddress: 0x%p\n, ppeb-ImageBaseAddress); return 0; }调试技巧在ppeb NtCurrentTeb()-ProcessEnvironmentBlock;行设断点F10单步后打开“调试→窗口→内存→内存1”输入ppeb即可看到PEB结构体原始字节。对照winnt.h中_PEB定义验证ImageBaseAddress字段偏移0x10是否与GetModuleHandle(NULL)返回值一致——这是确认PEB读取正确的黄金交叉验证。3.2 IOCP完成包投递顺序验证用Event Log反推内核队列行为Chapter16\IOCPDemo示例创建10个重叠I/O请求期望完成包按发起顺序返回。但实际调试发现第3个请求的完成包总在第7个之后到达。这不是Bug而是Windows I/O管理器的完成端口队列优化策略——当多个请求针对同一文件句柄时内核可能合并底层IRP导致完成顺序与提交顺序不一致。验证方法启用Windows事件日志中的Microsoft-Windows-Kernel-Io通道需管理员权限# 启用内核I/O日志仅调试时开启性能损耗大 wevtutil sl Microsoft-Windows-Kernel-Io /e:true # 运行IOCPDemo.exe后导出日志 wevtutil qe Microsoft-Windows-Kernel-Io /q:*[System[(EventID1001)]] /f:text iocp_trace.txt在iocp_trace.txt中搜索FileObject地址可看到每个IRP的StartIo和CompleteRequest时间戳。你会发现第3个请求的StartIo时间戳晚于第7个证明内核确实在重排——这解释了为何应用层不能假设完成顺序。书中强调“IOCP保证公平性”此处的“公平”指每个完成包最终必达且不饿死而非“FIFO”。3.3 SEH异常展开栈帧x64下__try/__except为何不捕获访问违例Chapter23\SEHDemo中int* p nullptr; *p 1;本应触发EXCEPTION_ACCESS_VIOLATION并被__except(EXCEPTION_EXECUTE_HANDLER)捕获但实际程序直接崩溃。原因在于x64平台弃用了x86的FS段寄存器SEH链改用RtlLookupFunctionTable进行栈回溯而SEHDemo项目未启用/EHsc编译选项。修复步骤右键项目→属性→C/C→代码生成→启用C异常设为“是(/EHsc)”同页面→启用运行时类型信息设为“是(/GR)”在main函数外添加#pragma comment(linker, /ENTRY:mainCRTStartup)强制使用C运行时入口。血泪经验这个坑曾让某开发者连续三天排查“为什么SEH不工作”最后发现是VS新建项目默认关闭了C异常支持。记住__try/__except是Windows结构化异常但x64下必须与C异常机制协同工作否则编译器会优化掉异常处理表。4. 避坑指南5条真实踩过的雷每一条都让调试时间翻倍注意以下问题均来自一线开发者在复现本书源码时的真实记录非理论推测。现象、原因、解决均已验证。4.1 现象Chapter12\JobObjectDemo中AssignProcessToJobObject返回TRUE但子进程仍能创建新进程原因未设置JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK标志。Windows Job Object默认阻止进程脱离但若子进程调用CreateProcess且父进程未显式允许静默脱离则子进程会被终止ExitCode0xC0000142。解决在SetInformationJobObject前添加JOBOBJECT_EXTENDED_LIMIT_INFORMATION jeli {0}; jeli.BasicLimitInformation.LimitFlags JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE | JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK; // 关键 SetInformationJobObject(hJob, JobObjectExtendedLimitInformation, jeli, sizeof(jeli));4.2 现象Chapter17\MemoryMappedFile示例中MapViewOfFile返回NULLGetLastError()为5拒绝访问原因文件映射对象hMap创建时使用PAGE_READWRITE但MapViewOfFile调用时传入FILE_MAP_WRITE而目标文件以GENERIC_READ打开缺少GENERIC_WRITE权限。解决确保CreateFile打开文件时权限匹配// 创建文件时必须包含GENERIC_WRITE HANDLE hFile CreateFile(Ltest.dat, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // 映射时权限必须与文件句柄权限兼容 LPVOID pView MapViewOfFile(hMap, FILE_MAP_WRITE, 0, 0, 0); // 此处FILE_MAP_WRITE才有效4.3 现象Chapter20\Synchronization\SRWLockDemo在Release模式下死锁Debug模式正常原因SRWLOCK是轻量级同步原语不进行递归检测。若同一线程重复调用AcquireSRWLockExclusive将永久阻塞。Debug版CRT可能插入额外检查掩盖问题。解决用CRITICAL_SECTION替代需InitializeCriticalSection或严格保证SRWLock的配对使用// 错误无保护的重复获取 AcquireSRWLockExclusive(g_srwLock); AcquireSRWLockExclusive(g_srwLock); // 死锁 // 正确用bool标记状态 static volatile bool g_lockHeld false; if (!g_lockHeld) { AcquireSRWLockExclusive(g_srwLock); g_lockHeld true; }4.4 现象Chapter24\DLLInjection中CreateRemoteThread返回NULLGetLastError()为5拒绝访问原因目标进程为64位而注入DLL为32位或反之Windows禁止跨架构远程线程创建。解决编译DLL时严格匹配目标进程架构。用IsWow64Process检测BOOL bIs64Bit FALSE; IsWow64Process(hTargetProc, bIs64Bit); // 若bIs64Bit为TRUE目标为64位必须注入64位DLL // 否则注入32位DLL且目标进程必须是32位4.5 现象Chapter27\Network\WSADemo中WSAStartup成功但socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)返回INVALID_SOCKET原因未链接ws2_32.lib或链接顺序错误ws2_32.lib需在kernel32.lib之后。解决项目属性→链接器→输入→附加依赖项确保ws2_32.lib在列表末尾kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;ws2_32.lib5. 进阶验证用Sysinternals工具链交叉验证源码行为建立可信度闭环源码跑通只是起点要真正信任它反映Windows真实行为必须用第三方权威工具反向验证。我一般用Sysinternals套件微软官方出品无安全风险做三层校验进程视图→内存视图→内核对象视图。5.1 进程视图Process Explorer确认句柄泄漏与继承行为运行Chapter08\HandleInheritDemo演示句柄继承在Process Explorer中定位该进程切换到“句柄”标签页。过滤Type为Event应看到两个命名事件对象InheritableEventAttributes列显示“Inheritable: Yes”NonInheritableEventAttributes列显示“Inheritable: No”若两者均显示“Yes”说明CreateEvent调用时bInheritHandleFALSE参数未生效——此时应检查是否误将SECURITY_ATTRIBUTES结构体bInheritHandle字段设为TRUE书中P189示例易错点。5.2 内存视图VMMap确认虚拟内存布局与保护属性运行Chapter13\VirtualAllocDemo演示MEM_COMMIT | MEM_RESERVE启动VMMap附加到该进程。在“区域类型”列筛选Private Data找到VirtualAlloc分配的区块双击查看详细信息Commit Size应等于代码中dwSize参数如0x10000Protect应为PAGE_READWRITE若代码中用PAGE_NOACCESS此处应显示No AccessState应为Committed若State显示Reserved说明VirtualAlloc只执行了保留未提交——常见原因是第二次调用时传入MEM_COMMIT但遗漏lpAddress参数应为NULL以让系统选择地址。5.3 内核对象视图WinObj确认命名对象可见性与权限Chapter15\NamedObjectsDemo创建命名互斥体Global\MyMutex但其他会话Session 0 vs Session 1无法访问。用WinObj导航至\BaseNamedObjects搜索MyMutex右键→“Properties”若Security标签页中DACL显示BUILTIN\Administrators:(OI)(CI)(F)说明对象创建时未指定lpSecurityAttributes导致默认安全描述符限制访问若对象出现在\Sessions\1\BaseNamedObjects而非\BaseNamedObjects说明创建时使用了Local\MyMutex前缀Global\前缀才跨会话。我的习惯每次修改一个源码示例必用这三款工具各验证一次。不是为了炫技而是建立“代码→OS行为→工具观测”的可信闭环。当VMMap显示的内存保护位与代码flProtect参数完全一致时那种“啊原来Windows真是这么干的”的顿悟感比编译通过强烈十倍。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

信息系统项目管理师教程第四版深度拆解:过程组、WBS与干系人管理

信息系统项目管理师教程第四版深度拆解:过程组、WBS与干系人管理

简介:《信息系统项目管理师教程-第四版》是一本面向信息系统项目管理师考生及从业者的权威教程,紧扣项目管理知识体系(PMBOK),系统讲解启动、计划、执行、监控、收尾五大过程组,覆盖范围、时间、成本、质量…

2026/10/12 14:28:17 阅读更多 →
双极性四线步进电机控制:四拍、八拍与细分微步的时序本质与避坑指南

双极性四线步进电机控制:四拍、八拍与细分微步的时序本质与避坑指南

简介:这份资源面向单片机开发者、自动化设备调试人员及电机控制初学者,系统讲解双极性四线步进电机的驱动时序与控制方式,帮助解决整步、半步到细分微步的选型与实现问题。压缩包内共1个docx文档,约1.25MB,以图文形式整…

2026/10/12 14:27:22 阅读更多 →
Local Studio 运行时环境自动发现全解析:venv、Docker、原生二进制探测原理

Local Studio 运行时环境自动发现全解析:venv、Docker、原生二进制探测原理

【免费下载链接】local-studio Control panel for VLLM, Sglang, llama.cpp, exllamav3 项目地址: https://gitcode.com/gh_mirrors/vl/local-studio 点击查看 免费下载 Local Studio 是一个面向 vLLM、SGLang、llama.cpp、MLX 四大推理引擎的本地部署控制面板&…

2026/10/12 14:27:32 阅读更多 →

最新新闻

编译原理四类语法分析器实现与冲突消解实战

编译原理四类语法分析器实现与冲突消解实战

简介:本资源是北京化工大学编译原理课程大作业的完整实现包,面向计算机类专业本科生、课程设计实践者及编译技术初学者,系统覆盖词法分析与多种语法分析核心算法(LL1、LR0、SLR1、LR1、LALR1),解决理论学习…

2026/10/12 15:05:48 阅读更多 →
OpenClaw 对接国内 AI 模型:用 TaoToken 统一 Key 省 Token 成本

OpenClaw 对接国内 AI 模型:用 TaoToken 统一 Key 省 Token 成本

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 15:05:48 阅读更多 →
AI代理营销技能库:从大模型能力到稳定可迭代的营销工作流

AI代理营销技能库:从大模型能力到稳定可迭代的营销工作流

1. 为什么需要"营销技能库":AI代理的专项能力瓶颈 1.1 通用大模型做营销的"四不够" 先聊一个我自己的直观感受。去年年初我做了一批基于大模型API的营销辅助工具,产品、文案、投放的同事都来试用。刚开始大家很兴奋,因为…

2026/10/12 15:05:48 阅读更多 →
智能体分级与落地:从L1到L5的实战指南

智能体分级与落地:从L1到L5的实战指南

这两年“智能体”这个词已经快被聊烂了,但凡一个工具接了大模型接口,都敢在发布会上管自己叫智能体。但真正把它当作“干活的个体”来用的人,应该都有同感:不同的智能体,干活能力差别可以大到像两个物种。有的只会在对…

2026/10/12 15:05:48 阅读更多 →
网络切片仿真实战:从资源隔离到SLA验证的完整指南

网络切片仿真实战:从资源隔离到SLA验证的完整指南

简介:这份网络切片仿真资源面向5G通信网络方向的研究人员、高校学生与工程技术人员,聚焦在共享物理基础设施上构建多个独立逻辑网络这一核心命题,帮助读者在真实部署前完成切片建模、资源分配与性能评估。压缩包共67个文件,约280K…

2026/10/12 15:05:48 阅读更多 →
openclaw 用例翻译笔记:Event Guest Confirmation 的 Twilio 与 OpenAI 配置拆解

openclaw 用例翻译笔记:Event Guest Confirmation 的 Twilio 与 OpenAI 配置拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 15:04:46 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →