- 博客(120)
- 资源 (322)
- 收藏
- 关注
原创 Lazarus - 隐秘的神器
本文总结回顾了Delphi 、Lazarus的发展史,以及Lazarus蓬勃发展的现状,以此作为 Lazarus 专栏的序幕。
2024-05-22 18:04:43 1344
原创 WinDbg 源码级调试 C++ 程序
本篇作为 Windbg 调试 C++ 源码的抛砖引玉,希望能够给为各位对 C++ 细节有研究兴趣的同学一个不同的角度。Windows 调试和Windbg 工具本身的使用又是另外两个浩瀚的领域,学无止尽,共勉!
2024-05-16 17:18:43 1172
原创 C++ 关键字 :using
在 C/C++ 中,定义类型别名的方法有#define、typedefusing 多种方式。#define 是宏定义关键字,用途广法,尤其是 C 中,不局限于类型别名定义。在C++中,推荐使用using来定义类型别名,因为它更符合C++的现代编程风格。似乎三者没有明显区别,当然由于#define 宏定义的本质,和后两者是可以明显区分开的。那么,typedef 和using的区别在哪里呢?首先,使用typedef定义的别名和使用using定义的别名在语义上是等效的。
2024-05-14 17:15:00 1801
原创 探索大型语言模型(LLM)的世界
大型语言模型(LLM)是深度学习在自然语言处理(NLP)领域的集大成者,它们代表了人工智能技术在理解和生成语言方面的重要进步。LLM的核心是基于变换器(Transformer)架构的复杂神经网络,这一架构因其在处理序列数据时的高效性而闻名。LLM是一种预训练的深度学习模型,专为处理自然语言而设计。它们通过在大量文本数据上进行训练,学习语言的统计特性和模式,从而能够执行各种语言任务,如文本分类、情感分析、机器翻译、问答系统和文本摘要等。
2024-05-09 17:51:25 1230
原创 浅谈Windows 上的线程亲和性(Thread affinity)
由浅入深,从不同系统、C++语言、Windows对资源调度管理等多个层面阐述了线程亲和性的由来、使用,并附带了Raymond Chen的《Thread affinity of user interface objects》系列的翻译。
2024-05-08 19:04:30 1639 3
原创 Windows 进程权限浅谈 -- 提权 / 降权
在 Windows 上,用户对权限并不敏感,可能最为直观的是 UAC ,但相信很多人已经关掉了它的提示。但其实安全性早已深入了 Windows 的方方面面。Windows Vista 引入了一个称为强制完整性控制()的新安全结构,类似于 Linux/Unix 中可用的完整性功能。在 Windows Vista 以及后续版本如Windows 11/10和Windows 8/7中,所有安全主体(用户、计算机、服务等)和对象(文件、注册表键、文件夹和资源)都被赋予MIC标签。
2024-03-24 23:49:39 1104
原创 翻译《The Old New Thing》- How do I mark a shortcut file as requiring elevation?
文章介绍了如何通过设置SLDF_RUNAS_USER标志,将快捷方式标记为需要提升权限。提供了一个示例程序,用于修改快捷方式属性,使其以管理员身份运行。同时提醒读者,通常应由程序本身指定提升权限需求。
2024-05-23 14:28:00 177
原创 翻译《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 167
原创 翻译《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 713
原创 翻译《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 142
原创 翻译《The Old New Thing》- Kernel handles are not reference-counted
内核句柄不使用引用计数管理。复制句柄会增加内核对象的引用计数,每个复制的句柄都需要独立关闭,以减少引用计数。关闭句柄时,它将不再可用。
2024-05-21 15:40:52 415
原创 翻译《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 820
原创 翻译《The Old New Thing》- QueryPerformanceCounter is not a source for unique identifiers
文章讨论了使用QueryPerformanceCounter生成唯一标识符的问题,指出它在单进程内可能产生重复值,不适用于生成全局唯一ID。建议使用InterlockedIncrement64来生成唯一的64位值。
2024-05-21 10:34:43 389
原创 翻译《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 894
原创 翻译《The Old New Thing》- Choosing a provocative debug signature
回到Windows 95时代,图形引擎中存在一个难以捉摸的堆损坏错误,经过大量分析后,图形团队确信问题来自于他们组件之外的地方,并且他们相当确定是哪个组件导致了问题,但他们需要证据。
2024-05-20 10:30:10 223
原创 翻译《The Old New Thing》- What is the impact on the Start menu of long-running programs?
在这篇文章中,Raymond Chen解释了开始菜单如何根据用户启动程序的频率来显示程序,并且特别指出了长期运行的程序如何被考虑进去。他提到,即使用户没有频繁重新启动一个程序,只要它连续运行,系统也会每天为其“增加一分”,以确保这些程序在开始菜单中不会被忽略。这样的设计既保持了开始菜单的有用性,又避免了过度强调那些始终在后台运行的程序。
2024-05-19 06:45:00 242
原创 翻译《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 757
原创 翻译《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 554
原创 翻译《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 653
原创 翻译《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 523
原创 翻译《The Old New Thing》- What is the underlying object behind a COM interface pointer?
Raymond Chen在这篇文章中分享了在调试COM接口时确定底层对象的技巧,包括如何使用调试器命令和一些简单的数学来调整指针,以便正确地查看对象的内容。他还提到了一些在调试过程中应该注意的事项,比如vtable的位置、引用计数的值,以及字符串成员的内容。
2024-05-17 10:30:29 895
原创 翻译《The Old New Thing》- Identifying an object whose underlying DLL has been unloaded
本文通过实例教学如何诊断程序崩溃问题,特别是当涉及到动态链接库(DLL)被卸载时。作者利用调试器识别出虚方法调用、vtable位置、以及DLL卸载的迹象。通过将模块作为转储文件加载,计算vtable地址的偏移,并最终确认了崩溃的原因是由于DLL被错误地卸载,而程序仍尝试访问其资源。
2024-05-17 10:19:07 971
原创 翻译《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 356
原创 翻译《The Old New Thing》- Stupid debugger tricks: Calling functions and methods
本文介绍了如何在调试器中使用 .call 命令自动调用函数和C++方法,包括设置参数和寄存器,以及如何通过模拟已知签名的函数来调用接口方法。同时警告了这种操作可能带来的副作用。
2024-05-16 14:05:01 554
原创 翻译《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 862
原创 翻译《The Old New Thing》- What does the CS_CLASSDC class style do?
本文讨论了CS_CLASSDC类样式的问题,指出它会导致跨窗口和线程间共享同一个设备上下文(DC),从而引发竞态条件和难以调试的错误。作者建议现代软件不应使用此样式,它仅适用于16位Windows的单线程环境。
2024-05-15 10:01:11 623
原创 翻译《The Old New Thing》- Taxes: Remote Desktop Connection and painting
本文讨论了在远程桌面连接环境下,如何优化Windows应用程序的绘图性能。关键技术点包括:1) 适应网络延迟和带宽限制;2) 使用双缓冲技术减少屏幕闪烁;3) 根据是否通过远程桌面连接选择绘图方法,以平衡性能和用户体验。
2024-05-14 11:16:40 851
原创 翻译《The Old New Thing》- Taxes: Detecting session state changes, such as a locked workstation
该文主要介绍了如何在Windows程序中通过注册会话通知和监听WM_WTSSESSION_CHANGE消息来检测工作站锁定、用户切换等会话状态变化,并用声音反馈响应这些变化。
2024-05-14 10:33:53 355
原创 翻译《The Old New Thing》- The redirection operator can occur in the middle of the command line
这篇文章讨论了命令行重定向操作符的位置问题。
2024-05-13 11:41:01 241
原创 翻译《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 578
原创 翻译《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 900
原创 翻译《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 910
原创 翻译《The Old New Thing》 - No, really, you need to pass all unhandled messages to DefWindowProc
这篇文章讨论了在编写Windows窗口程序时,正确处理所有消息的重要性。
2024-05-11 16:35:38 254
原创 翻译《The Old New Thing》-Basic ground rules for programming – function parameters and how they are used
在系统编程中有一些基本的规则,这些规则是如此明显,以至于大多数文档都不会花时间去解释,因为这些规则应该已经被编程实践者内化到不需要明确表达的程度。
2024-05-11 16:25:28 990
原创 翻译《The Old New Thing》 - Restating the obvious about the WM_COMMAND message
本文详细解释了 WM_COMMAND 消息的用途和参数,包括三种触发该消息的情景:菜单选择、控件通知和加速键击。wParam 参数的高字节表示通知代码,低字节表示控件或菜单项的标识符。lParam 参数是控件句柄,如果是菜单或加速器则为 NULL。文章还讨论了 WM_NOTIFY 与 WM_COMMAND 的区别,并指出在早期 Windows 版本中,由于 WM_NOTIFY 不可用,控件通常使用 WM_COMMAND 进行通知。最后,文中通过代码示例说明了如何手动生成这些消息。
2024-05-10 17:02:44 886
原创 翻译《The Old New Thing》 - The performance cost of reading a registry key
p=32193Raymond Chen 2006年2月22日。
2024-05-10 15:00:44 883
原创 翻译《The Old New Thing》 - Logical consequences of the way Windows converts single-clicks in
Windows将单击转换为双击机制的逻辑后果
2024-05-09 17:57:31 501
原创 翻译《The Old New Thing》 - The new scratch program
译注:此篇是 翻译《The Old New Thing》 - The scratch program 姊妹篇,对 scratch 程序作作了升级,采用了现代 C++ 编程风格,避免了全局状态,并通过虚函数和基类指针提供了扩展性。
2024-05-08 19:11:24 279
原创 翻译《The Old New Thing》 - Understanding the consequences of WAIT_ABANDONED
文章讨论了在多线程同步中,如果一个线程在没有释放互斥体(mutex)的情况下退出,互斥体会被操作系统自动释放,这种情况被称为“WAIT_ABANDONED”,并且这种情况可能会导致严重的问题。
2024-05-07 18:08:26 780
原创 翻译《The Old New Thing》- Rendering menu glyphs is slightly trickier
文章介绍了如何在 GDI 中正确渲染菜单勾选标记,包括使用 DrawFrameControl 生成单色掩码,并通过 BitBlt 函数将其着色以匹配系统菜单颜色。技术要点包括创建单色位图、设置目标设备上下文的颜色和使用位图操作来实现透明渲染。
2024-05-07 17:09:20 891
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
Scenicplayer(CSF播放器).rar
2024-02-28
如何确保窗口始终置底在桌面上?
2023-06-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人