- 博客(126)
- 资源 (322)
- 收藏
- 关注
原创 Lazarus - 隐秘的神器
本文总结回顾了Delphi 、Lazarus的发展史,以及Lazarus蓬勃发展的现状,以此作为 Lazarus 专栏的序幕。
2024-05-22 18:04:43 1669
原创 WinDbg 源码级调试 C++ 程序
本篇作为 Windbg 调试 C++ 源码的抛砖引玉,希望能够给为各位对 C++ 细节有研究兴趣的同学一个不同的角度。Windows 调试和Windbg 工具本身的使用又是另外两个浩瀚的领域,学无止尽,共勉!
2024-05-16 17:18:43 1176
原创 C++ 关键字 :using
在 C/C++ 中,定义类型别名的方法有#define、typedefusing 多种方式。#define 是宏定义关键字,用途广法,尤其是 C 中,不局限于类型别名定义。在C++中,推荐使用using来定义类型别名,因为它更符合C++的现代编程风格。似乎三者没有明显区别,当然由于#define 宏定义的本质,和后两者是可以明显区分开的。那么,typedef 和using的区别在哪里呢?首先,使用typedef定义的别名和使用using定义的别名在语义上是等效的。
2024-05-14 17:15:00 1803
原创 探索大型语言模型(LLM)的世界
大型语言模型(LLM)是深度学习在自然语言处理(NLP)领域的集大成者,它们代表了人工智能技术在理解和生成语言方面的重要进步。LLM的核心是基于变换器(Transformer)架构的复杂神经网络,这一架构因其在处理序列数据时的高效性而闻名。LLM是一种预训练的深度学习模型,专为处理自然语言而设计。它们通过在大量文本数据上进行训练,学习语言的统计特性和模式,从而能够执行各种语言任务,如文本分类、情感分析、机器翻译、问答系统和文本摘要等。
2024-05-09 17:51:25 1234
原创 浅谈Windows 上的线程亲和性(Thread affinity)
由浅入深,从不同系统、C++语言、Windows对资源调度管理等多个层面阐述了线程亲和性的由来、使用,并附带了Raymond Chen的《Thread affinity of user interface objects》系列的翻译。
2024-05-08 19:04:30 1643 3
原创 Windows 进程权限浅谈 -- 提权 / 降权
在 Windows 上,用户对权限并不敏感,可能最为直观的是 UAC ,但相信很多人已经关掉了它的提示。但其实安全性早已深入了 Windows 的方方面面。Windows Vista 引入了一个称为强制完整性控制()的新安全结构,类似于 Linux/Unix 中可用的完整性功能。在 Windows Vista 以及后续版本如Windows 11/10和Windows 8/7中,所有安全主体(用户、计算机、服务等)和对象(文件、注册表键、文件夹和资源)都被赋予MIC标签。
2024-03-24 23:49:39 1119
原创 翻译《The Old New Thing》- Why doesn‘t Explorer show recursive directory size as an optional column?
文章解释了为什么Windows资源管理器不显示文件夹的递归大小作为可选列。原因是,如果资源管理器始终递归计算文件夹大小,无论是在公司网络还是家庭电脑上,都可能导致性能问题。在公司网络中,如果许多用户同时这样做,可能会对服务器造成巨大压力。在家庭电脑上,自动计算文件夹大小可能会导致磁盘频繁操作,影响用户体验。此外,文章还提到了关于“目录大小”定义的问题。
2024-05-25 07:30:00 241
原创 翻译《The Old New Thing》-Superstition: Why is GetFileAttributes the way old-timers test file existence?
文章讨论了为什么经验丰富的程序员推荐使用GetFileAttributes函数来检测文件是否存在。这是因为在早期的网络环境中,一些网络提供商实现了“数据路径”功能,这可能导致使用传统方法(如尝试打开文件)来检测文件存在时得到错误结果。GetFileAttributes不受数据路径影响,因此提供了一个更可靠的检测方式。尽管现代网络环境中可能不再需要这样做,但出于安全考虑,Windows代码仍然倾向于使用GetFileAttributes。
2024-05-25 06:15:00 296
原创 翻译《The Old New Thing》- Why do we even have the DefWindowProc function?
文章讨论了为什么我们有DefWindowProc函数。它解释了如果窗口过程遵循对话框模型,简单地返回FALSE以获得默认处理,那么DefWindowProc函数就没有必要存在。然而,这种模型忽略了派生类使用基类作为子程序的关键模式。文章通过示例代码展示了如何使用DefWindowProc来扩展而非完全覆盖基类行为,以及如何修改消息以自定义默认处理程序的行为。这在面向对象编程中是常见的,允许派生类大部分保持基类的行为。如果没有DefWindowProc,实现这些功能将会更加困难。
2024-05-24 16:16:22 428
原创 翻译《The Old New Thing》- Which windows appear in the Alt+Tab list?
Alt+Tab显示的窗口规则是:从每个窗口追溯到根所有者,再沿活动弹出窗口链找到可见窗口;若回到起点,则该窗口被加入列表。WS_EX_TOOLWINDOW和WS_EX_APPWINDOW样式允许窗口在列表中显示或隐藏,即使规则不允许。
2024-05-24 10:20:10 314
原创 翻译《The Old New Thing》- What‘s the BS_PUSHLIKE button style for?
BS_PUSHLIKE是一种按钮样式,它使复选框或单选按钮在视觉上看起来像推按钮,但功能上仍然保持原有的行为。尽管外观改变,用户可能会对这种混淆的视觉效果感到困惑。
2024-05-24 10:09:30 547
原创 翻译《The Old New Thing》- How do I mark a shortcut file as requiring elevation?
文章介绍了如何通过设置SLDF_RUNAS_USER标志,将快捷方式标记为需要提升权限。提供了一个示例程序,用于修改快捷方式属性,使其以管理员身份运行。同时提醒读者,通常应由程序本身指定提升权限需求。
2024-05-23 14:28:00 411
原创 翻译《The Old New Thing》- Book review: Advanced Windows Debugging (Mario Hewardt and Daniel Pravat)
《高级Windows调试》一书由Mario Hewardt和Daniel Pravat撰写,覆盖了从基础到高级的调试任务,包括堆损坏、死锁和CPU使用率问题,适合有经验的开发者深入学习。
2024-05-23 14:09:46 301
原创 翻译《The Old New Thing》- If control-specific messages belong to the WM_USER range, why are messages...
文章讨论了为何一些控制特定消息如BM_SETCHECK属于系统消息范围,而通常这些应属于WM_USER范围。原因是为了避免在32位Windows中因地址空间隔离导致跨进程通信时的崩溃问题,所有内置控件的遗留消息被移到系统消息类别,窗口管理器可以正确处理这些消息。
2024-05-22 14:14:42 791
原创 翻译《The Old New Thing》- What‘s the difference between EM_UNDO and WM_UNDO?
这应该算是Raymond Chen的一篇水文,正如他所说 “今天的猜测工作:EM_UNDO和WM_UNDO的历史。”
2024-05-22 14:04:00 165
原创 翻译《The Old New Thing》- Kernel handles are not reference-counted
内核句柄不使用引用计数管理。复制句柄会增加内核对象的引用计数,每个复制的句柄都需要独立关闭,以减少引用计数。关闭句柄时,它将不再可用。
2024-05-21 15:40:52 619
原创 翻译《The Old New Thing》- Footnotes in Win32 history: VLM (Very Large Memory) support
文章回顾了Win32历史上的VLM(Very Large Memory)功能,这是为Alpha AXP架构设计的64位内存访问技术。VLM允许32位Windows NT操作系统在64位处理器上访问额外的地址空间,主要服务于需要大量内存和地址空间的高端数据库程序。随着Alpha AXP的淘汰,VLM也退出了历史舞台,但其编程模式在AWE中有延续。
2024-05-21 10:49:52 822
原创 翻译《The Old New Thing》- QueryPerformanceCounter is not a source for unique identifiers
文章讨论了使用QueryPerformanceCounter生成唯一标识符的问题,指出它在单进程内可能产生重复值,不适用于生成全局唯一ID。建议使用InterlockedIncrement64来生成唯一的64位值。
2024-05-21 10:34:43 590
原创 翻译《The Old New Thing》- How to check for errors from SetFilePointer
问题在于,你必须以两种不同的方式检查错误,这取决于你是使用32位变体还是64位变体。幸运的是,内核团队意识到他们的聪明反被聪明误,并想出了一个新函数。这个约定的例外是当返回值是模糊的,就像我们在这里有当结果的低阶32位恰好是0xFFFFFFFF。,而不仅仅是当结果的低阶32位恰好是0xFFFFFFFF的时候呢?MSDN中的文档是正确的,但我发现人们更喜欢我以不同的方式重述相同的事实,所以这里是文档的表格版本。我必须承认MSDN中的文档在这一点上可以更清晰,但示例代码希望解决任何悬而未决的歧义。
2024-05-20 14:55:33 897
原创 翻译《The Old New Thing》- Choosing a provocative debug signature
回到Windows 95时代,图形引擎中存在一个难以捉摸的堆损坏错误,经过大量分析后,图形团队确信问题来自于他们组件之外的地方,并且他们相当确定是哪个组件导致了问题,但他们需要证据。
2024-05-20 10:30:10 225
原创 翻译《The Old New Thing》- What is the impact on the Start menu of long-running programs?
在这篇文章中,Raymond Chen解释了开始菜单如何根据用户启动程序的频率来显示程序,并且特别指出了长期运行的程序如何被考虑进去。他提到,即使用户没有频繁重新启动一个程序,只要它连续运行,系统也会每天为其“增加一分”,以确保这些程序在开始菜单中不会被忽略。这样的设计既保持了开始菜单的有用性,又避免了过度强调那些始终在后台运行的程序。
2024-05-19 06:45:00 244
原创 翻译《The Old New Thing》- What determines which programs show up on the front page of the Windows XP...
在这篇文章中,Raymond Chen解释了Windows XP开始菜单上显示哪些程序的基本原理,即最近经常使用的程序会被显示在开始菜单的首页上。他提到了开始菜单程序选择的细节是专利申请中的,因此他不能透露太多信息。他还讨论了微调和细节处理的重要性,这些因素共同作用,使得开始菜单上的程序列表更加有用和自然。最后,他以幽默的方式回应了关于软件专利的争议。
2024-05-19 06:15:00 759
原创 翻译《The Old New Thing》- Why are console windows limited to Lucida Console and raster fonts?
Raymond Chen详细解释了为什么控制台窗口对字体有限制,特别是等宽字体和支持OEM代码页中所有字符的字体。他讨论了字体中字符的A-和C宽度问题,以及这些问题如何导致渲染问题和用户错误报告。他还提到了Lucida Console字体是经过测试并已知可以在控制台窗口中使用的少数字体之一,并解释了为什么没有提供选择替代字体的接口,因为这可能会导致控制台窗口的显示效果非常糟糕。最后,他提供了一个知识库文章的链接,供那些愿意承担风险的高级用户添加自己的字体到列表中。
2024-05-18 06:45:00 558
原创 翻译《The Old New Thing》- Quick overview of how processes exit on Windows XP
Raymond Chen详细讨论了Windows XP中进程退出时发生的情况,包括线程的强制终止、关键部分和同步原语的处理,以及对进程堆的影响。他强调了在DLL_PROCESS_DETACH处理过程中应该避免执行任何复杂操作的重要性,并指出了即使在进程终止后,线程创建仍然被允许的原因。最后,他预示了在后续文章中将讨论的由进程终止方式引起的问题。
2024-05-18 05:45:00 655
原创 翻译《The Old New Thing》- How my lack of understanding of how processes exit on Windows XP forced a ...
p=26983Raymond Chen 2007年05月04日。
2024-05-17 10:42:43 525
原创 翻译《The Old New Thing》- What is the underlying object behind a COM interface pointer?
Raymond Chen在这篇文章中分享了在调试COM接口时确定底层对象的技巧,包括如何使用调试器命令和一些简单的数学来调整指针,以便正确地查看对象的内容。他还提到了一些在调试过程中应该注意的事项,比如vtable的位置、引用计数的值,以及字符串成员的内容。
2024-05-17 10:30:29 897
原创 翻译《The Old New Thing》- Identifying an object whose underlying DLL has been unloaded
本文通过实例教学如何诊断程序崩溃问题,特别是当涉及到动态链接库(DLL)被卸载时。作者利用调试器识别出虚方法调用、vtable位置、以及DLL卸载的迹象。通过将模块作为转储文件加载,计算vtable地址的偏移,并最终确认了崩溃的原因是由于DLL被错误地卸载,而程序仍尝试访问其资源。
2024-05-17 10:19:07 974
原创 翻译《The Old New Thing》- Using the “gu“ debugger command to find the infinite loop
本文介绍了如何使用 WinDbg 中的 !runaway 扩展和 gu 命令来识别和调试导致100% CPU占用的无限循环问题。通过监控线程的CPU时间变化,可以找到并逐层调试循环中的函数。
2024-05-16 14:10:02 358
原创 翻译《The Old New Thing》- Stupid debugger tricks: Calling functions and methods
本文介绍了如何在调试器中使用 .call 命令自动调用函数和C++方法,包括设置参数和寄存器,以及如何通过模拟已知签名的函数来调用接口方法。同时警告了这种操作可能带来的副作用。
2024-05-16 14:05:01 557
原创 翻译《The Old New Thing》- What does the CS_OWNDC class style do?
本文讨论了CS_OWNDC窗口类样式的影响,它让窗口管理器为窗口创建一个永久的设备上下文(DC),并始终返回同一个DC。这会导致代码中假设每次调用GetDC会得到不同DC的逻辑出现问题,因为实际上多次调用可能返回相同的DC,从而破坏了依赖于此假设的绘图代码。
2024-05-15 10:19:23 864
原创 翻译《The Old New Thing》- What does the CS_CLASSDC class style do?
本文讨论了CS_CLASSDC类样式的问题,指出它会导致跨窗口和线程间共享同一个设备上下文(DC),从而引发竞态条件和难以调试的错误。作者建议现代软件不应使用此样式,它仅适用于16位Windows的单线程环境。
2024-05-15 10:01:11 624
原创 翻译《The Old New Thing》- Taxes: Remote Desktop Connection and painting
本文讨论了在远程桌面连接环境下,如何优化Windows应用程序的绘图性能。关键技术点包括:1) 适应网络延迟和带宽限制;2) 使用双缓冲技术减少屏幕闪烁;3) 根据是否通过远程桌面连接选择绘图方法,以平衡性能和用户体验。
2024-05-14 11:16:40 854
原创 翻译《The Old New Thing》- Taxes: Detecting session state changes, such as a locked workstation
该文主要介绍了如何在Windows程序中通过注册会话通知和监听WM_WTSSESSION_CHANGE消息来检测工作站锁定、用户切换等会话状态变化,并用声音反馈响应这些变化。
2024-05-14 10:33:53 357
原创 翻译《The Old New Thing》- The redirection operator can occur in the middle of the command line
这篇文章讨论了命令行重定向操作符的位置问题。
2024-05-13 11:41:01 244
原创 翻译《The Old New Thing》- The first word on the command line is the program name only by convention
这篇文章讨论了在Windows编程中,命令行参数的格式和处理方式。
2024-05-13 11:26:59 580
原创 翻译《The Old New Thing》- How do I write a regular expression that matches an IPv4 dotted address?
这篇文章指出了正则表达式在处理复杂模式时的局限性,并提供了一个使用JavaScript函数来识别IPv4地址的替代方法。作者强调了在编程中应该根据问题的性质选择合适的工具。
2024-05-12 19:39:46 903
原创 翻译《The Old New Thing》 - What can I do with the HINSTANCE returned by the ShellExecute function?
这篇文章解释了在32位Windows系统中,HINSTANCE不再像在16位Windows中那样具有唯一性,并且讨论了在使用ShellExecute和ShellExecuteEx函数时,如何正确地处理程序的启动和文档的关闭。
2024-05-12 14:24:33 912
原创 翻译《The Old New Thing》 - No, really, you need to pass all unhandled messages to DefWindowProc
这篇文章讨论了在编写Windows窗口程序时,正确处理所有消息的重要性。
2024-05-11 16:35:38 257
原创 翻译《The Old New Thing》-Basic ground rules for programming – function parameters and how they are used
在系统编程中有一些基本的规则,这些规则是如此明显,以至于大多数文档都不会花时间去解释,因为这些规则应该已经被编程实践者内化到不需要明确表达的程度。
2024-05-11 16:25:28 992
在Lazarus中的Delphi转换器.zip
2024-05-24
WinDbg 提取自 SDK - Windows 10.0.22621.1778
2024-05-16
蒸汽平台上架全流程引导.pdf
2024-05-15
Winsoft Media Suite v2.1-Delphi7~Delphi12-FullSource.7z
2024-04-29
Lengyel E. - Foundations of Game Engine Development(卷一卷二合集).zip
2024-04-28
Axolot XLSReadWriteII v6.01.17 D12 FullSource.7z
2024-04-24
AsyncPro-20240417.zip
2024-04-24
txquery-master.zip
2024-04-24
RAD-Studio-12-Athens-Help-all fixed.7z
2024-04-24
golang devops项目实战.zip
2024-04-24
uniGUI开发人员手册.pdf
2024-04-24
SynEdit-20240417 for Delphi10.1~Delphi11-FullSource.zip
2024-04-24
StyleContorls576(DXE2~D12) -FullSource
2024-04-24
后端开发JAVA 版安卓服务后台运行 DEMO 仅供参考 AndroidDaemonService.zip
2024-04-24
C++20 for Programmers (Deitel Developer Series) .epub
2024-04-23
Python Coding Programming - 12th Edition 2022 ( etc.) .pdf
2024-04-23
Delphi Quick Syntax Reference -2020.pdf
2024-04-23
gameaipro.pdf
2024-04-23
Onesweep A Faster Least Significant Digit Radix Sort for GPUs
2024-04-23
windows-win32-direct3d12.pdf
2024-04-23
编码、乱码、emoji.docx
2024-04-23
DirectX11-With-Windows-SDK-v2.38.2.zip
2024-04-23
DOSCommand for Delphi11.zip
2024-04-22
PowerPDF 10.3 Rio FullSource.zip
2024-04-22
VirtualTreeView 10.3 Rio Fullsource.zip
2024-04-22
TurboPack SysTools Updated for 10.3 Rio FullSource.zip
2024-04-22
如何使用 Shodan 搜索引擎保姆级教程(附链接).pdf
2024-04-22
深入Intel NPU加速库:从安装到模型优化
2024-04-21
Delphi面向对象程序设计(中山大学 主讲黎培兴) .7z.006
2024-02-28
Delphi面向对象程序设计(中山大学 主讲黎培兴) .7z.005
2024-02-28
Delphi面向对象程序设计(中山大学 主讲黎培兴) .7z.004
2024-02-28
Delphi面向对象程序设计(中山大学 主讲黎培兴) .7z.003
2024-02-28
Delphi面向对象程序设计(中山大学 主讲黎培兴) .7z.002
2024-02-28
Delphi面向对象程序设计(中山大学 主讲黎培兴) .7z.001
2024-02-28
如何确保窗口始终置底在桌面上?
2023-06-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人