Need some work done? Post a Project Today
In short : I need an open-source C++ software tool that can set the hardware clock (BIOS) in several Windows version without rebooting and called from user-space by application or command line.
In detail :
1) I need the source of the written software so I can compile it myself.
Must be a C or C++ project (I want to be able to use the MSVC).
Cannot use closed libraries (use standard libs as much as possible) I need to be able to compile it, so every dependency needs to be (briefly) documented.
All source will be my property (I can use, sell or even make it open-source as I please).
All codes needs to be briefly documented (e.g. comments inside the code).
2) In all cases the hardware clock should be able to be read and set.
With ewf enabled I can still see all changes in BIOS I made with this tool.
Take in account that I will use the UTC flag in Windows registry (RealTimeIsUniversal) which makes the simple SetSystemTime() not work on hardware clock.
3) Several Windows system should be supported starting from Windows XP till Windows 7.
Minimum requirement of Windows 7 Embedded.
Second (minimum) requirement of Windows XP Embedded. (Need a very good reason if not).
All additional supported and tested Windows systems are a plus !
All not supported or tested version, should be listed with reason.
4) Preferably no system reboot needed to set the clock.
Ewf is enabled, so everything changed can be removed.
If reboot is needed, I need a good reason and documentation.
5) Tools be called from user-space by application or command line.
Preferably a (or two) command line tool which reads and sets the hardware clock.
Nothing with GUI as it needs to be as small as possible and there is no human intervention.
Will be called from other tools to change the clock (user-space).
Running the application should not require reboot if possible to set the clock, but installing the tool (with e.g. a windows driver) can be done by reboot if needed.
Full documentation on how to install and use the tool.
And last but not least : the entire solution should never trigger a BSOD or pop-up messages. You are allowed to let the application "die" with an error on the output and "return 1" (always "return 0" on success). The behavior of every error should be documented briefly.
Additional information to help :
As a developer myself I have done some R&D myself and (due to many other deadlines) I figured out I would need to much time to start developing this myself (to many other projects and deadlines).
So I discovered that there are two useful Windows Undocumented functions inside hal.dll named "HalQueryRealTimeClock" and "HalSetRealTimeClock" that can be used from kernel-space.
My idea what I need :
A Windows driver that allows me calling kernel-space specific functions (like w2k_spy.sys and the w2k_call.dll provided for Windows 2000 ).
A second tool (executable) that can call these functions and test the assumptions.
Any other idea need to be discussed briefly as I don't want you to waste the same research time I have spend.
The stability is MUCH more important than budget or time. But I would like a quick solution without reducing the quality.
Note that I (as C++ dev) will do a build (please document the build steps or provide a make file or a project file) and check if I can compile the solution. If not I will just give the compile errors back and wait for the solution. I will also read every documentation and the entire code. I need to understand it enough to be sure there will be no BSODs. I also will do a 24 hour test on a Windows 7 Embedded (if this already works, half the budget could be given) and Windows XP Embedded (if possible or otherwise a very good reason with documentation).
 Undocumented Windows 2000 Secrets, A Programmer's Cookbook By Sven Boris Schreiber