Git Product home page Git Product logo

errorcodefinder's Introduction

ErrorCodeFinder

Windows 错误代码查询工具

介绍

这个工具用于查询错误代码的名称和对应的解释,支持从名称、代码、类型查找。

界面截图

错误代码包含Win32,HRESULT,NTSTATUS,HTTP状态码,WinHTTP,蓝屏代码,DirectX,Gdiplus,errno等共9000+项。工具的特点有:

  • 虚表加载,启动速度较快

  • 关键字高亮,双色显示

  • 支持从自定义模块加载字符串和消息表

  • 支持导出功能

  • 支持多语言(指自行修改资源段

用法

搜索框支持以下格式:

  • 错误代码,纯数字/0x开头/h结尾,如14110xC00000050C6h

  • 错误类型,前面加冒号,如:errno:Win32

  • 错误名称,支持通配符,如ACCESSD2DERR_*DEVICE

  • 可以用空格分隔多个条件

使用示例

下载

在右侧Release中下载对应平台的版本。

关于代码

这些代码是之前写的,当时很好奇Win32中虚表的实现,再加上errlook个人感觉并不好用,然后就写了这么一个工具。代码是用vscode写的,vc7工具链编译,当时只是写出来自己用,可能很多语法细节没注意到。这几天把它们整理了以下,创建了一个vs2022工程,导致一大堆警告,这个应该与源码注解(sal.h)缺失有关系。因为当时用vscode写的时候编译并没有sal警告,加上Win32的自绘确实十分复杂,要处理一堆情况,然后屎山就这么堆起来了。最后结果就是代码很凌乱,耦合性也比较高。不过最后终于是能用了,而且我最近收集了更全面的数据,打算重构这个工具(这个下面细说),那这个版本就先这样吧。

然后列举一下代码的结构:

  • dlgmain.c:这个是主界面的对话框,实现了主界面(除了列表框)的所有逻辑,ErrorCodeSet *pecs;这个变量保存了已注册的所有错误代码模块。其他dlg*.c是其他对话框的实现。

  • errh.c:处理程序出现的bug,当错误发生时,BugHandler会捕获它并汇报,同时把现场保存到同目录的dump文件中。

  • guiaux.c:一些常用的GUI操作的封装。

  • utils.c:工具类,条件搜索就是在这个文件中实现的。

  • ldmgr.c:里面子类化了一个SysListView32,写这个工具的大部分时间都用在这个上面了。关于这个关键字高亮,实现起来比我想象的要难得多:由于有多种字体,程序在收到DPI变化的信息时,要重新创建这些字体;由于字体改变导致列表框默认的宽度测量失效,当列表项省略号折叠时,为了迎合默认行为(鼠标悬停或者键盘定位到折叠项时会展开文字),必须自己实现原地气泡提示(In-place tooltips);双击表头分隔条的行为(拓宽列使可见的所有项都不折叠)也要自己测量文本大小……

  • provider.c:注册所有错误代码模块,并提供这些模块会用到的一些函数。

  • mod/ec_*.c:错误代码模块,每个文件对应一种错误代码类型。

最近从Windows SDK、WDK和MSDN中收集了更多有用的信息,有时间可能会写一个更好用的版本,目前有一点想法大饼,工具写完大概是这样的:

  • 支持搜索常量、枚举类型和它们的对应值和解释。

  • 支持搜索COM接口的GUID值、继承关系、方法和它在虚函数表中的索引。

  • 支持搜索结构体、联合类型的成员,并提供它们在x86/x64/ARM/ARM64结构体中的偏移量。对于少量宏条件控制的复杂结构体,目前还没有什么好的办法处理,暂时选择了最长的一条分支。

  • 支持搜索宏和函数,包括与函数关联的静态库(.lib)和动态库(.dll)。

  • 上面那些类型会尽量提供MSDN在线文档的对应链接。

  • 考虑到用纯Win32写界面确实很蛋疼,准备用现在比较流行的前端框架写,在浏览器上运行,这样可以不用考虑GUI中那些琐碎的事情,而且可以跨平台。

  • 不太想弄后端,准备用wasm保证数据在前端查询的效率。工具的数据量可能比较大,目前想的是把数据包LZMA压缩,下载时保存到IndexDB,并在wasm里面解压。

至于这个可不可行还有待进一步研究。不过有一些想象中的功能放到浏览器中应该是实现不了了,比如从ProgID查CLSID、IDispatch接口查询等等。所以用MFC或者WTL也是一个选择?目前还没有想到什么双赢的办法,先走一步看一步吧。

errorcodefinder's People

Contributors

killtimer0 avatar

Stargazers

everything411 avatar  avatar Hello World ! avatar C2149 avatar  avatar 姜胤 avatar  avatar  avatar  avatar marxlanhaochen avatar Matrix avatar 偷了黄昏的酒 avatar  avatar joejiafeng avatar  avatar Samiya avatar  avatar 7ian avatar BlueFunny avatar 泉野咲 avatar  avatar  avatar  avatar Lau Spence avatar  avatar  avatar  avatar  avatar liber avatar  avatar zimizile avatar wlcheng avatar onKotlin avatar Jokerchen avatar  avatar  avatar  avatar 乐宝 avatar  avatar 陈泽宇 avatar Two and a half years avatar  avatar  avatar popy32 avatar  avatar 哔哩哔哩の琥珀 avatar  avatar  avatar ZacLinley avatar Anbai avatar  avatar  avatar  avatar lucky avatar  avatar  avatar Wen.jie avatar LeonEleven avatar  avatar  avatar Tom avatar ZZP avatar PeterLiu avatar  avatar  avatar  avatar Taxuo avatar  avatar холодный июль avatar  avatar  avatar 苏凡 avatar 小贝塔 avatar  avatar ifwlzs avatar hirak0 avatar  avatar sqwei avatar  avatar RepentStar avatar  avatar rurudo avatar  avatar lunksana avatar  avatar  avatar KCYLion avatar  avatar HsiChien avatar  avatar 世上僅有的榮光之路 avatar zodiackiara avatar alphapenng avatar  avatar  avatar Justf avatar  avatar an avatar  avatar FlyingSky avatar

Watchers

 avatar

errorcodefinder's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.