Faintsnow/HE

Possible to read command line output from external program

Closed this issue · 5 comments

Hey, brilliant software you have. This is one of the few programs that allows reading of MMIO on intel after windows 11 22H2. I wanted to ping this from a command prompt and was curious if the output could be made available to the external program.

Thanks!!

You can write a script and let HE load it and save result. you can get detail cmd by typing ? in HE/CMD mode.

For example, if you want to read IOPort 0x60 and memory 0xFFFFFF00 and save the result to 123.log.
1.Create a script file,such as 123.txt
2.Write below cmd in 123.txt
readio8 0x60
readmem8 0xffffff00
savelog 123.log
close
3.run HE.exe load 123.txt
4.HE will decode 123.txt and save result in 123.log then exit.
123.log is as below:
HE - Hardware read & write utility v1.22.6.29
(C) Faintsnow. All Right Reserved.

HE:> readio8 0x60
Read Io Port 0x60 = 0xFE
HE:> readmem8 0xffffff00
Read Memory Address 0xFFFFFF00 = 0x18
HE:> savelog 123.log
All output saved to file 123.log !

Thanks for the quick reply! I’ll give a bit more background on the use of my software.

I make tdp control software for laptops/gaming handhelds. The program I’ve been using, rw.exe and the rw driver, are not usable in windows 11 22H2. I write and read the memory address 0xFEDC59A0 or 0xFED159A0. I found your software thanks to a friend. I was previously running these commands in the background, sometimes multiple times a minute.

I played around with your software and found the batch file function. I see that you can’t send multiple commands unless you close the software after use. Is it possible to send several commands at different times so the program doesn’t need to close and reopen?

多谢你的帮助

Seems you need another simple command line program just like attachment.
You can do that with it.
KX.zip


KX utility v2020.07.08 for debug only by Faintsnow(http://hwrw.phpnet.us).

KX.exe /DumpVar [VarName] [Guid] [FileName] -> Save VarName with special Guid to a special file
KX.exe /DumpVar [VarName] [FileName] -> Save VarName with Global Guid to a special file
KX.exe /DumpMem [MemAddr] [Length] [FileName] -> Save Memory data to a special file
KX.exe /DumpEcRAM [EcAddr] [Length] [FileName] -> Save EcRam data to a special file
KX.exe /DumpPci [BusNo] [DevNo] [FucNo] [FileName] -> Save Pci Configuration data to a special file
KX.exe /ListSMBIOS -> List SmBios struction
KX.exe /ListEDID -> List EDID struction
KX.exe /RdVar [VarName] [Guid] -> Get and show VarName with special Guid
KX.exe /RdVar [VarName] -> Get and show VarName with Global Guid to a special file
KX.exe /WrVar [VarName] [Guid] [Offset] [Value] -> Set VarName with special Guid Offset with Value
KX.exe /WrVar [VarName] [Offset] [Value] -> Set VarName with Global Guid Offset with Value
KX.exe /RdMem8 [MemAddr] -> Get 1 byte Memory data
KX.exe /RdMem16 [MemAddr] -> Get 2 byte Memory data
KX.exe /RdMem32 [MemAddr] -> Get 4 byte Memory data
KX.exe /WrMem8 [MemAddr] [Data] -> Set 1 byte Memory data
KX.exe /WrMem16 [MemAddr] [Data] -> Set 2 byte Memory data
KX.exe /WrMem32 [MemAddr] [Data] -> Set 4 byte Memory data
KX.exe /RdIo8 [IoAddr] -> Get 1 byte Io Port data
KX.exe /RdIo16 [IoAddr] -> Get 2 byte Io Port data
KX.exe /RdIo32 [IoAddr] -> Get 4 byte Io Port data
KX.exe /WrIo8 [IoAddr] [Data] -> Set 1 byte Io Port data
KX.exe /WrIo16 [IoAddr] [Data] -> Set 2 byte Io Port data
KX.exe /WrIo32 [IoAddr] [Data] -> Set 4 byte Io Port data
KX.exe /RdIoId8 [IoAddr] [Offset] -> Get 1 byte from Io index/data offset
KX.exe /RdIoId16 [IoAddr] [Offset] -> Get 2 byte from Io index/data offset
KX.exe /RdIoId32 [IoAddr] [Offset] -> Get 4 byte from Io index/data offset
KX.exe /WrIoId8 [IoAddr] [Offset] [Data] -> Set 1 byte to Io index/data offset
KX.exe /WrIoId16 [IoAddr] [Data] -> Set 2 byte to Io index/data offset
KX.exe /WrIoId32 [IoAddr] [Data] -> Set 4 byte to Io index/data offset
KX.exe /RdMsr [MsrAddr] -> Get 8 byte Msr data
KX.exe /WrMsr [MsrAddr] [DataHi] [DataLo] -> Set 8 byte Msr data
KX.exe /RdPci8 [BusNo] [Dev] [Fuc] [Offset] -> Get 1 byte Pci data
KX.exe /RdPci16 [BusNo] [Dev] [Fuc] [Offset] -> Get 2 byte Pci data
KX.exe /RdPci32 [BusNo] [Dev] [Fuc] [Offset] -> Get 4 byte Pci data
KX.exe /WrPci8 [BusNo] [Dev] [Fuc] [Offset] [Data] -> Set 1 byte Pci data
KX.exe /WrPci16 [BusNo] [Dev] [Fuc] [Offset] [Data] -> Set 2 byte Pci data
KX.exe /WrPci32 [BusNo] [Dev] [Fuc] [Offset] [Data] -> Set 4 byte Pci data
KX.exe /RdEcRAM [Offset] -> Get 1 byte ECRAM data
KX.exe /WrEcRAM [Offset] [Data] -> Set 1 byte ECRAM data
KX.exe /HS -> Hybrid Shutdown
KX.exe /RS -> Restart
KX.exe /SD -> Shutdown
KX.exe /S3 -> Suspend
KX.exe /S4 -> Hibernate
KX.exe /Setup -> Restart to Setup

Seems you need another simple command line program just like attachment. You can do that with it. KX.zip

KX utility v2020.07.08 for debug only by Faintsnow(http://hwrw.phpnet.us).

KX.exe /DumpVar [VarName] [Guid] [FileName] -> Save VarName with special Guid to a special file KX.exe /DumpVar [VarName] [FileName] -> Save VarName with Global Guid to a special file KX.exe /DumpMem [MemAddr] [Length] [FileName] -> Save Memory data to a special file KX.exe /DumpEcRAM [EcAddr] [Length] [FileName] -> Save EcRam data to a special file KX.exe /DumpPci [BusNo] [DevNo] [FucNo] [FileName] -> Save Pci Configuration data to a special file KX.exe /ListSMBIOS -> List SmBios struction KX.exe /ListEDID -> List EDID struction KX.exe /RdVar [VarName] [Guid] -> Get and show VarName with special Guid KX.exe /RdVar [VarName] -> Get and show VarName with Global Guid to a special file KX.exe /WrVar [VarName] [Guid] [Offset] [Value] -> Set VarName with special Guid Offset with Value KX.exe /WrVar [VarName] [Offset] [Value] -> Set VarName with Global Guid Offset with Value KX.exe /RdMem8 [MemAddr] -> Get 1 byte Memory data KX.exe /RdMem16 [MemAddr] -> Get 2 byte Memory data KX.exe /RdMem32 [MemAddr] -> Get 4 byte Memory data KX.exe /WrMem8 [MemAddr] [Data] -> Set 1 byte Memory data KX.exe /WrMem16 [MemAddr] [Data] -> Set 2 byte Memory data KX.exe /WrMem32 [MemAddr] [Data] -> Set 4 byte Memory data KX.exe /RdIo8 [IoAddr] -> Get 1 byte Io Port data KX.exe /RdIo16 [IoAddr] -> Get 2 byte Io Port data KX.exe /RdIo32 [IoAddr] -> Get 4 byte Io Port data KX.exe /WrIo8 [IoAddr] [Data] -> Set 1 byte Io Port data KX.exe /WrIo16 [IoAddr] [Data] -> Set 2 byte Io Port data KX.exe /WrIo32 [IoAddr] [Data] -> Set 4 byte Io Port data KX.exe /RdIoId8 [IoAddr] [Offset] -> Get 1 byte from Io index/data offset KX.exe /RdIoId16 [IoAddr] [Offset] -> Get 2 byte from Io index/data offset KX.exe /RdIoId32 [IoAddr] [Offset] -> Get 4 byte from Io index/data offset KX.exe /WrIoId8 [IoAddr] [Offset] [Data] -> Set 1 byte to Io index/data offset KX.exe /WrIoId16 [IoAddr] [Data] -> Set 2 byte to Io index/data offset KX.exe /WrIoId32 [IoAddr] [Data] -> Set 4 byte to Io index/data offset KX.exe /RdMsr [MsrAddr] -> Get 8 byte Msr data KX.exe /WrMsr [MsrAddr] [DataHi] [DataLo] -> Set 8 byte Msr data KX.exe /RdPci8 [BusNo] [Dev] [Fuc] [Offset] -> Get 1 byte Pci data KX.exe /RdPci16 [BusNo] [Dev] [Fuc] [Offset] -> Get 2 byte Pci data KX.exe /RdPci32 [BusNo] [Dev] [Fuc] [Offset] -> Get 4 byte Pci data KX.exe /WrPci8 [BusNo] [Dev] [Fuc] [Offset] [Data] -> Set 1 byte Pci data KX.exe /WrPci16 [BusNo] [Dev] [Fuc] [Offset] [Data] -> Set 2 byte Pci data KX.exe /WrPci32 [BusNo] [Dev] [Fuc] [Offset] [Data] -> Set 4 byte Pci data KX.exe /RdEcRAM [Offset] -> Get 1 byte ECRAM data KX.exe /WrEcRAM [Offset] [Data] -> Set 1 byte ECRAM data KX.exe /HS -> Hybrid Shutdown KX.exe /RS -> Restart KX.exe /SD -> Shutdown KX.exe /S3 -> Suspend KX.exe /S4 -> Hibernate KX.exe /Setup -> Restart to Setup

Hey @Faintsnow, will you keep this up to date ?