我需要访问Fan Speed。
董事会是KGPE-D16与Winbond W83667HGA。
我有关于连接器的SMBIOS数据,我需要读/写它们
[Port Connector Information] (Type 8)
08 09 17 00 01 FF 00 00 FF 46 52 4E 54 5F 46 41 .........FRNT_FA
4E 31 00 00 N1..
Type 0x08 (8)
Length 0x09 (9)
Handle 0x0017 (23)
Internal Reference Designator String1 - "FRNT_FAN1"
Internal Connector Type 0xFF - Other
External Reference Designator NULL
External Connector Type 0x00 - None
Port Type 0xFF - Other
问题是我从未习惯过WDK和WMI的事情。 我正在看Open-Hardware-Monitor,无法理解如何在那里插入。 我也有RWEverything但它的命令/地址系统很难理解。 这个问题很简单 - 我只想读/写一个数字。
ADD1。风扇速度已由BIOS控制。所以我想先读一读。
ADD2。在RWEverything做什么应该更容易。但我不明白它的CLI。
ADD3。在RWEverything中有命令:I{len} {port}
。
我还没把它弄好。
ADD4。执行IO的功能如下所示
private byte ReadByte(byte bank, byte register) {
Ring0.WriteIoPort(
(ushort)(address + ADDRESS_REGISTER_OFFSET), BANK_SELECT_REGISTER);
Ring0.WriteIoPort(
(ushort)(address + DATA_REGISTER_OFFSET), bank);
Ring0.WriteIoPort(
(ushort)(address + ADDRESS_REGISTER_OFFSET), register);
return Ring0.ReadIoPort(
(ushort)(address + DATA_REGISTER_OFFSET));
}
private void WriteByte(byte bank, byte register, byte value) {
Ring0.WriteIoPort(
(ushort)(address + ADDRESS_REGISTER_OFFSET), BANK_SELECT_REGISTER);
Ring0.WriteIoPort(
(ushort)(address + DATA_REGISTER_OFFSET), bank);
Ring0.WriteIoPort(
(ushort)(address + ADDRESS_REGISTER_OFFSET), register);
Ring0.WriteIoPort(
(ushort)(address + DATA_REGISTER_OFFSET), value);
}
读取的函数调用如下所示
ReadByte(0, FAN_BIT_REG[i]);
ReadByte(FAN_TACHO_BANK[i], FAN_TACHO_REG[i]);
因为来自OpenHardwareMonitor的这些代码是愚蠢的延迟,我无法理解它到底是什么'地址'。