访问端口连接器(在华硕Winbond HW上读/写风扇转速)

时间:2014-03-23 15:34:00

标签: port hardware motherboard

我需要访问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的这些代码是愚蠢的延迟,我无法理解它到底是什么'地址'。

0 个答案:

没有答案