Ru 是AMI 的 James Wang(个人主页http://ruexe.blogspot.tw/)推出的系列工具,其中包括IA32
X64版本的Ru.EFI和一个 Windows 版本的 RU.EXE。最新版本可以在https://github.com/JamesAmiTw/ru-uefi
下载到。
本文简单介绍它的功能和使用。
UEFI X64 版本初始界面如下:
File 菜单,提供了 Load Save 和 Compare 功能,可以保存和读取当前页面的数据,一般情况下不会使用,主要原因是操作没有 Windows 下方便。
2.Config 菜单用来进行寄存器的访问。
2.1 PCI 可以访问 PCI
设备
选中后输入要查看设备的 Bus Dev Func:
2.2 ISA
ISA IO是
Index/Data 这种形式的访问IO Port:
2.3 ISA IO
选择之后会出现2个选项让你选择:
例如,下面是查看 CMOS
的结果。个人感觉这个和上面的 ISA 选项通过手动输入端口号没有差别。
2.4 IO Space
选择后出现额外菜单如下:
选择 Normal
IO Space 后会要求输入要查看的端口。
2.5 IDE Identify。这个功能能够查看当前系统中的SATA接口的硬盘信息(PCIE接口的SSD不行)。
选中后会出现提示继续选择要查看的硬盘。
之后可以查看硬盘信息。
额外说一句:不知道什么原因,这个功能和截图软件(CrScreenshotDxe)有冲突,运行这个功能后,会导致死机。本篇的截图都是使用 HDMI 转 USB 设备完成的。
for (byte x = 0 ; x < 2 ; x++){
uint16_t mlx90640Frame[834];
int status = MLX90640_GetFrameData(MLX90640_address, mlx90640Frame);
float vdd = MLX90640_GetVdd(mlx90640Frame, &mlx90640);
float Ta = MLX90640_GetTa(mlx90640Frame, &mlx90640);
float tr = Ta - TA_SHIFT; //Reflected temperature based on the sensor ambient temperature
float emissivity = 0.95;
MLX90640_CalculateTo(mlx90640Frame, &mlx90640, emissivity, tr, mlx90640To);
}
/**
Reads an 8-bit I/O port.
Reads the 8-bit I/O port specified by Port. The 8-bit read value is returned.
This function must guarantee that all I/O read and write operations are
serialized.
If 8-bit I/O port operations are not supported, then ASSERT().
@param Port The I/O port to read.
@return The value read.
**/
UINT8
EFIAPI
IoRead8 (
IN UINTN Port
)
{
UINT8 Value;
_ReadWriteBarrier ();
Value = (UINT8)_inp ((UINT16)Port);
_ReadWriteBarrier ();
return Value;
}
#define IO_LIB_ADDRESS(Segment, Port) \
( ((Port) & 0xffff) | (((Segment) & 0xffff) << 16) )
UINT8
EFIAPI
IoRead8 (
IN UINTN Port
);
UINT8
EFIAPI
IoWrite8 (
IN UINTN Port,
IN UINT8 Value
);
VOID
EFIAPI
IoReadFifo8 (
IN UINTN Port,
IN UINTN Count,
OUT VOID *Buffer
);
VOID
EFIAPI
IoWriteFifo8 (
IN UINTN Port,
IN UINTN Count,
IN VOID *Buffer
);
UINT8
EFIAPI
IoOr8 (
IN UINTN Port,
IN UINT8 OrData
);
UINT8
EFIAPI
IoAnd8 (
IN UINTN Port,
IN UINT8 AndData
);
UINT8
EFIAPI
IoAndThenOr8 (
IN UINTN Port,
IN UINT8 AndData,
IN UINT8 OrData
);
UINT8
EFIAPI
IoBitFieldRead8 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit
);
UINT8
EFIAPI
IoBitFieldWrite8 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 Value
);
UINT8
EFIAPI
IoBitFieldOr8 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 OrData
);
UINT8
EFIAPI
IoBitFieldAnd8 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 AndData
);
UINT8
EFIAPI
IoBitFieldAndThenOr8 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 AndData,
IN UINT8 OrData
);
UINT16
EFIAPI
IoRead16 (
IN UINTN Port
);
UINT16
EFIAPI
IoWrite16 (
IN UINTN Port,
IN UINT16 Value
);
VOID
EFIAPI
IoReadFifo16 (
IN UINTN Port,
IN UINTN Count,
OUT VOID *Buffer
);
VOID
EFIAPI
IoWriteFifo16 (
IN UINTN Port,
IN UINTN Count,
IN VOID *Buffer
);
UINT16
EFIAPI
IoOr16 (
IN UINTN Port,
IN UINT16 OrData
);
UINT16
EFIAPI
IoAnd16 (
IN UINTN Port,
IN UINT16 AndData
);
UINT16
EFIAPI
IoAndThenOr16 (
IN UINTN Port,
IN UINT16 AndData,
IN UINT16 OrData
);
UINT16
EFIAPI
IoBitFieldRead16 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit
);
UINT16
EFIAPI
IoBitFieldWrite16 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 Value
);
UINT16
EFIAPI
IoBitFieldOr16 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 OrData
);
UINT16
EFIAPI
IoBitFieldAnd16 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 AndData
);
UINT16
EFIAPI
IoBitFieldAndThenOr16 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 AndData,
IN UINT16 OrData
);
UINT32
EFIAPI
IoRead32 (
IN UINTN Port
);
UINT32
EFIAPI
IoWrite32 (
IN UINTN Port,
IN UINT32 Value
);
VOID
EFIAPI
IoReadFifo32 (
IN UINTN Port,
IN UINTN Count,
OUT VOID *Buffer
);
VOID
EFIAPI
IoWriteFifo32 (
IN UINTN Port,
IN UINTN Count,
IN VOID *Buffer
);
UINT32
EFIAPI
IoOr32 (
IN UINTN Port,
IN UINT32 OrData
);
UINT32
EFIAPI
IoAnd32 (
IN UINTN Port,
IN UINT32 AndData
);
UINT32
EFIAPI
IoAndThenOr32 (
IN UINTN Port,
IN UINT32 AndData,
IN UINT32 OrData
);
UINT32
EFIAPI
IoBitFieldRead32 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit
);
UINT32
EFIAPI
IoBitFieldWrite32 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 Value
);
UINT32
EFIAPI
IoBitFieldOr32 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 OrData
);
UINT32
EFIAPI
IoBitFieldAnd32 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 AndData
);
UINT32
EFIAPI
IoBitFieldAndThenOr32 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 AndData,
IN UINT32 OrData
);
UINT64
EFIAPI
IoRead64 (
IN UINTN Port
);
UINT64
EFIAPI
IoWrite64 (
IN UINTN Port,
IN UINT64 Value
);
UINT64
EFIAPI
IoOr64 (
IN UINTN Port,
IN UINT64 OrData
);
UINT64
EFIAPI
IoAnd64 (
IN UINTN Port,
IN UINT64 AndData
);
UINT64
EFIAPI
IoAndThenOr64 (
IN UINTN Port,
IN UINT64 AndData,
IN UINT64 OrData
);
UINT64
EFIAPI
IoBitFieldRead64 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit
);
UINT64
EFIAPI
IoBitFieldWrite64 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 Value
);
UINT64
EFIAPI
IoBitFieldOr64 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 OrData
);
UINT64
EFIAPI
IoBitFieldAnd64 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 AndData
);
UINT64
EFIAPI
IoBitFieldAndThenOr64 (
IN UINTN Port,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 AndData,
IN UINT64 OrData
);
UINT8
EFIAPI
MmioRead8 (
IN UINTN Address
);
UINT8
EFIAPI
MmioWrite8 (
IN UINTN Address,
IN UINT8 Value
);
UINT8
EFIAPI
MmioOr8 (
IN UINTN Address,
IN UINT8 OrData
);
UINT8
EFIAPI
MmioAnd8 (
IN UINTN Address,
IN UINT8 AndData
);
UINT8
EFIAPI
MmioAndThenOr8 (
IN UINTN Address,
IN UINT8 AndData,
IN UINT8 OrData
);
UINT8
EFIAPI
MmioBitFieldRead8 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit
);
UINT8
EFIAPI
MmioBitFieldWrite8 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 Value
);
UINT8
EFIAPI
MmioBitFieldOr8 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 OrData
);
UINT8
EFIAPI
MmioBitFieldAnd8 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 AndData
);
UINT8
EFIAPI
MmioBitFieldAndThenOr8 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT8 AndData,
IN UINT8 OrData
);
UINT16
EFIAPI
MmioRead16 (
IN UINTN Address
);
UINT16
EFIAPI
MmioWrite16 (
IN UINTN Address,
IN UINT16 Value
);
UINT16
EFIAPI
MmioOr16 (
IN UINTN Address,
IN UINT16 OrData
);
UINT16
EFIAPI
MmioAnd16 (
IN UINTN Address,
IN UINT16 AndData
);
UINT16
EFIAPI
MmioAndThenOr16 (
IN UINTN Address,
IN UINT16 AndData,
IN UINT16 OrData
);
UINT16
EFIAPI
MmioBitFieldRead16 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit
);
UINT16
EFIAPI
MmioBitFieldWrite16 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 Value
);
UINT16
EFIAPI
MmioBitFieldOr16 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 OrData
);
UINT16
EFIAPI
MmioBitFieldAnd16 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 AndData
);
UINT16
EFIAPI
MmioBitFieldAndThenOr16 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT16 AndData,
IN UINT16 OrData
);
UINT32
EFIAPI
MmioRead32 (
IN UINTN Address
);
UINT32
EFIAPI
MmioWrite32 (
IN UINTN Address,
IN UINT32 Value
);
UINT32
EFIAPI
MmioOr32 (
IN UINTN Address,
IN UINT32 OrData
);
UINT32
EFIAPI
MmioAnd32 (
IN UINTN Address,
IN UINT32 AndData
);
UINT32
EFIAPI
MmioAndThenOr32 (
IN UINTN Address,
IN UINT32 AndData,
IN UINT32 OrData
);
UINT32
EFIAPI
MmioBitFieldRead32 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit
);
UINT32
EFIAPI
MmioBitFieldWrite32 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 Value
);
UINT32
EFIAPI
MmioBitFieldOr32 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 OrData
);
UINT32
EFIAPI
MmioBitFieldAnd32 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 AndData
);
UINT32
EFIAPI
MmioBitFieldAndThenOr32 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT32 AndData,
IN UINT32 OrData
);
UINT64
EFIAPI
MmioRead64 (
IN UINTN Address
);
UINT64
EFIAPI
MmioWrite64 (
IN UINTN Address,
IN UINT64 Value
);
UINT64
EFIAPI
MmioOr64 (
IN UINTN Address,
IN UINT64 OrData
);
UINT64
EFIAPI
MmioAnd64 (
IN UINTN Address,
IN UINT64 AndData
);
UINT64
EFIAPI
MmioAndThenOr64 (
IN UINTN Address,
IN UINT64 AndData,
IN UINT64 OrData
);
UINT64
EFIAPI
MmioBitFieldRead64 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit
);
UINT64
EFIAPI
MmioBitFieldWrite64 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 Value
);
UINT64
EFIAPI
MmioBitFieldOr64 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 OrData
);
UINT64
EFIAPI
MmioBitFieldAnd64 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 AndData
);
UINT64
EFIAPI
MmioBitFieldAndThenOr64 (
IN UINTN Address,
IN UINTN StartBit,
IN UINTN EndBit,
IN UINT64 AndData,
IN UINT64 OrData
);
UINT8 *
EFIAPI
MmioReadBuffer8 (
IN UINTN StartAddress,
IN UINTN Length,
OUT UINT8 *Buffer
);
UINT16 *
EFIAPI
MmioReadBuffer16 (
IN UINTN StartAddress,
IN UINTN Length,
OUT UINT16 *Buffer
);
UINT32 *
EFIAPI
MmioReadBuffer32 (
IN UINTN StartAddress,
IN UINTN Length,
OUT UINT32 *Buffer
);
UINT64 *
EFIAPI
MmioReadBuffer64 (
IN UINTN StartAddress,
IN UINTN Length,
OUT UINT64 *Buffer
);
UINT8 *
EFIAPI
MmioWriteBuffer8 (
IN UINTN StartAddress,
IN UINTN Length,
IN CONST UINT8 *Buffer
);
UINT16 *
EFIAPI
MmioWriteBuffer16 (
IN UINTN StartAddress,
IN UINTN Length,
IN CONST UINT16 *Buffer
);
UINT32 *
EFIAPI
MmioWriteBuffer32 (
IN UINTN StartAddress,
IN UINTN Length,
IN CONST UINT32 *Buffer
);
UINT64 *
EFIAPI
MmioWriteBuffer64 (
IN UINTN StartAddress,
IN UINTN Length,
IN CONST UINT64 *Buffer
);
我有一台 WHL HDK ,上面有4个实体按键,分别是 Power Button ,Volume Up, Volume Down 和Reset。从电路图上来看,Volume Up 和 Down 是直接连接进入EC的。起初我以为按下时会产生Q Event,但始终无法在 ASL 中触发对应的 Event。后来仔细琢磨:所谓“条条大路通罗马”,抓不到的原因非常可能是EC 并不是通过 Q_Event 的方式来通知的系统,很可能是通过多媒体按键的键值方式传递这个消息的。为此,进行下面的实验:
||0:1: kd> !ioapic
Controller at 0xfffff798800537f0 I/O APIC at VA 0xfffff79880057000
IoApic @ FEC00000 ID:2 (20) Arb:0
Inti00.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti01.: 00150000`00000080 Vec:80 FixedDel IrtIdx:000a edg high
Inti02.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti03.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti04.: 00170000`00000070 Vec:70 FixedDel IrtIdx:000b edg high
Inti05.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti06.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti07.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti08.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti09.: 000f0000`000080b0 Vec:B0 FixedDel IrtIdx:0007 lvl high
Inti0A.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti0B.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti0C.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti0D.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti0E.: 00130000`0000a0a0 Vec:A0 FixedDel IrtIdx:0009 lvl low
Inti0F.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti10.: 001d0000`0000a0a1 Vec:A1 FixedDel IrtIdx:000e lvl low
Inti11.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti12.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti13.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti14.: 001f0000`0000a091 Vec:91 FixedDel IrtIdx:000f lvl low
Inti15.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti16.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti17.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti18.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti19.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti1A.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti1B.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti1C.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti1D.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti1E.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti1F.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti20.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti21.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti22.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti23.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti24.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti25.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti26.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti27.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti28.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti29.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti2A.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti2B.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti2C.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti2D.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti2E.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti2F.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti30.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti31.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti32.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti33.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti34.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti35.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti36.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti37.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti38.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti39.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti3A.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti3B.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti3C.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti3D.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti3E.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti3F.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti40.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti41.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti42.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti43.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti44.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti45.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti46.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti47.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti48.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti49.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti4A.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti4B.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti4C.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti4D.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti4E.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti4F.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti50.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti51.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti52.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti53.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti54.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti55.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti56.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti57.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti58.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti59.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti5A.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti5B.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti5C.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti5D.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti5E.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti5F.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti60.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti61.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti62.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti63.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti64.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti65.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti66.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti67.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti68.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti69.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti6A.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti6B.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti6C.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti6D.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti6E.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti6F.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti70.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti71.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti72.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti73.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti74.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti75.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti76.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Inti77.: 00000000`000100ff Vec:FF FixedDel Ph:00000000 edg high m
Controller at 0xfffff79880053a38 PIC
Controller at 0xfffff79880053c60 PIC
当我们在 cmd 窗口下输入一个命令后,首先Windows会在当前目录中查找,之后会在 Path 指定的路径下查找。我们在编译过程中经常会遇到:输入一个可执行文件,但是又不知道是从哪里执行的。特别是当系统中有很多个同名文件的时候。最近发现Windows下有一个命令能够帮助我们很快完成查找的工作,就是 Where 命令。
例如,我想知道当前 python 执行的是哪个,可以输入 where python
WHERE.exe【参考1】
Locate and display files in a directory tree.
The WHERE command is roughly equivalent to the UNIX ‘which’ command. By default, the search is done in the current directory and in the PATH.
Syntax
WHERE [/r Dir] [/q] [/f] [/t] Pattern ...
WHERE [/q] [/f] [/t] [$ENV:Pattern
In PowerShell:
C:\Windows\System32\WHERE.exe ..options as above
key
/r A recursive search, starting with the specified Dir directory.
/q Don’t display the files but return either an exit code of 0 for success
or 1 for failure.
/f Display the output file name in quotation marks.
/t Display the size, time stamp, and date stamp of the file.
pattern The Drive\Directory\file, or set of files to be found.
you can use wildcard characters ( ? * ) and UNC paths.
ENV Path to search where ENV is an existing environment variable containing one or more paths.
By default, WHERE searches the current directory and the paths specified in the PATH environment variable.
The WHERE command is particularly useful to reveal multiple versions of the same comand/script on the system PATH such as a Resource Kit utility – Robocopy or ForFiles.
To run the WHERE command from PowerShell it is necessary to give the full path C:\Windows\System32\WHERE.exe otherwise the Where-Object cmdlet will take precedence.
Optional search paths (in pattern) should not be used in conjunction with /r Dir.
Examples
Find all copies of robocopy.exe in the current system path:
C:\Windows\System32\WHERE robocopy.exe
Find all files named ‘Zappa’ on the remote computer ‘Server64’ searching the subdirectories of Share1:
///
/// This protocol provides the services to initialize a periodic timer
/// interrupt, and to register a handler that is called each time the timer
/// interrupt fires. It may also provide a service to adjust the rate of the
/// periodic timer interrupt. When a timer interrupt occurs, the handler is
/// passed the amount of time that has passed since the previous timer
/// interrupt.
///
struct _EFI_TIMER_ARCH_PROTOCOL {
EFI_TIMER_REGISTER_HANDLER RegisterHandler;
EFI_TIMER_SET_TIMER_PERIOD SetTimerPeriod;
EFI_TIMER_GET_TIMER_PERIOD GetTimerPeriod;
EFI_TIMER_GENERATE_SOFT_INTERRUPT GenerateSoftInterrupt;
};