Step to UEFI (292)Cpp UEFI 008 This 是啥

这一系列文章的目标是让人看懂C++ 代码,因此很多地方知道意思即可。这次介绍的是 “this” 这个关键字。这是一个指向当前对象的 const 指针,通过它可以访问当前对象的所有成员。更简单的描述如下【参考1】:

一.this是什么

this 是 C++ 中的一个关键字

this是一个 const 指针

this 指针是所有成员函数的隐含参数

二、this可以用在哪

this 只能用在类的内部

this可用于调用类的成员函数和成员变量

三、this可以用来做什么

它指向当前对象,通过它可以访问当前对象的所有成员(包括 private、pro[......]

阅读全文

测试0x3F8 串口输出的 UEFI Application

之前的文章【参考1】介绍过,初始化 Legacy COM Port 为 115200 的方法。这次编写一个 UEFI Shell Application,初始化这个 COM port 之后输出 www.lab-z.com字符。

虽然有很多BIOS 的调试方法,但是BIOS 工程师最常见的方法仍然是串口输出 Log,唯一的原因是:足够简单和直接。用户无需为了调试BIOS而去调试工具。

源代码和编译后的 EFI Application:

参考:

1. https://www.lab-z.com/ocuart/

[......]

阅读全文

推荐一个开源的HTTP Server

有些时候我们需要进行一些带有JavaScript的网页测试,为了保证能够可靠的运行,推荐架设一个的 HTTP Server 然后通过浏览器进行测试。这推荐一个开源简单的命令行 HTTP Server:simple-http-server,项目地址是https://github.com/TheWaWaR/simple-http-server/

项目支持多种 OS:

对于我们来说,最简单的是 Windows 版本的。

具体的命令行参数如下:

比较常用的参数有如下几个:

--ip :指定绑定的IP 地址

-p : 指定绑定的端口号

例如:首先使[......]

阅读全文

修改 Win11 鼠标右键菜单的方法

Windows 11 中修改了鼠标右键菜单,我们经常需要选择“Show more options”才能找到我们需要的功能。本文介绍如何修改为之前的菜单。

管理员权限使用如下命令即可修改为老式右键菜单风格:

之后还可以使用如下命令恢复:

修改之后需要重启才能生效,或者使用如下命令重启Explorer:

编写两个批处理方便使用(密码 labz):

参考:

1.https://answers.microsoft.com/en-us/windows/forum/all/restore-old-right-click-context-men[......]

阅读全文

一种 WinDBG 无法使用的解决方法

之前偶然发现很多机器无法使用 WinDBG + USB 3.0 Cable 进行调试。最近花了一点时间仔细研究这个问题。

我遇到的现象是:USB 3.0 调试线连接之后设备管理器中有时候没有新设备出现,有时候出现Yellow Bang ,提示 Port Reset 失败。

经过研究这个问题是我的被调试系统(DUT)中存在多个 XHCI,解决方法是需要指定一个 XHCI 作为被调试目标。在 DUT 中管理员权限打开一个 CMD 窗口,然后输入如下命令:

bcdedit /set "{dbgsettings}" busparams 0.20.0

其中 0.20.0 是Bu[......]

阅读全文

3分钟看懂“打羽毛球因流浪猫绊倒致伤残,投喂者被判赔24万元”

(写这篇文章是因为看新闻看的恼火,那么多人包括律师就没有人直接引用原始文档看看判决究竟讲的是什么。都在强调“爱心”或者“道德退步”等等)。忍不住自己去查了一下。

这个事情是因为裁判文书网的公开所以被众人所知的,因此如果想知道发生了什么,需要去看原始的文档。

https://wenshu.court.gov.cn/website/wenshu/181107ANFZ0BXSK4/index.html?docId=nsblavzcFEjwf6iUEPJ3BF5Orla4JPs5WzfeZDnfDu6BbLO4nWpCUZO3qNaLMqsJlcEe6S1vNd6naPGooBXPL2d+[......]

阅读全文

Step to UEFI (291)Cpp UEFI 007 类

C++ 的类可以看作是一种特别的数据类型。基本的结构如下:

Public 成员相当于 Struct 结构体定义的,可以用 a.x 这种形式访问(public访问权限是全局的);

Private 成员不能直接被类的实体访问,也不能被子类的实体访问,但是可以被类的成员函数访问(private访问权限就是对内不设防,对外设防的);

Protected 成员不能被类的实体访问,但是可以被子类访问,也可以被类的成员函数访问(protected访问权限就是对内不受保护,对外受保护的)

这样设计的目的是:

1、访问权限作用,保护内部资源

(1)private的成员是c[......]

阅读全文

Rapoo V820 VS2019 控制 LED 的代码

Rapoo(雷柏) V820是一款游戏机械键盘,采用雷柏自主机械轴,双色注塑键帽,5个独立游戏G键,全尺寸一体式掌托,USB口109键无冲突,109键可编程,12种背光模式,加厚金属上盖。

它自带了一个颜色控制的程序,经过研究总结出了它的控制方法。使用 USBLyzer 抓取它设置的动作发现应用程序会对设备发送几个 Package。

经过多次实验,确定了2个 Pacakge 是必须的,发送之后键盘会改变LED颜色。第一个是下面代码中的cmdBuffer定义的,第二个是LedBuffer中定义的,所有颜色信息都是通过这个提供给键盘的。LedBuffer[8] 开始是按键的[......]

阅读全文