SpeedFan publishes a Shared Memory area.
Using Delphi convention:
TSharedMem=packed record
version:word;
flags :word;
MemSize:integer;
handle :THandle;
NumTemps:word;
NumFans :word;
NumVolts:word;
temps:array[0..31] of integer;
fans :array[0..31] of integer;
volts:array[0..31] of integer;
end;
The name of the shared memory area is "SFSharedMemory_ALM".
INTEGER is a 32 bit signed integer.
Consider that these specs were written a long time ago and might change in the future, but, currently, they are working fine ever since :-)

I´m no programmer and hope these information hand for an implementation in RR.