Question about future SpinRite under on-time and windows.

  • Be sure to checkout “Tips & Tricks”
    Dear Guest Visitor → Once you register and log-in please checkout the “Tips & Tricks” page for some very handy tips!

    /Steve.
  • BootAble – FreeDOS boot testing freeware

    To obtain direct, low-level access to a system's mass storage drives, SpinRite runs under a GRC-customized version of FreeDOS which has been modified to add compatibility with all file systems. In order to run SpinRite it must first be possible to boot FreeDOS.

    GRC's “BootAble” freeware allows anyone to easily create BIOS-bootable media in order to workout and confirm the details of getting a machine to boot FreeDOS through a BIOS. Once the means of doing that has been determined, the media created by SpinRite can be booted and run in the same way.

    The participants here, who have taken the time to share their knowledge and experience, their successes and some frustrations with booting their computers into FreeDOS, have created a valuable knowledgebase which will benefit everyone who follows.

    You may click on the image to the right to obtain your own copy of BootAble. Then use the knowledge and experience documented here to boot your computer(s) into FreeDOS. And please do not hesitate to ask questions – nowhere else can better answers be found.

    (You may permanently close this reminder with the 'X' in the upper right.)

coffeeprogrammer

Well-known member
Jul 19, 2021
175
15
I just finished module two, video 4 of the Windows Kernel Programming videos that I recommenced the other day. I’ve watched further long than that, but I back track and follow along while writing the code. After I’ve mastered this series I might try and write the programs in masm32. I wrote the beep application that uses the \\Device\\Beep and puts that device in a UNICODE_STRING, opens a handle and later use DeviceIoControl to make the system beep. I also successfully back ported it to VS2008 on Win7. So my question is relates to Steve’s on-time os for SR7, I searched the docs for DeviceIoControl and I found a function RTFDeviceIoControl, another page says the function that is emulating DeviceIoControl under on-time os is a dummy and does nothing and just returns. I think I do understand DeviceIoControl at this point and it has input and output buffers under windows and it has control codes that I think are defined by the driver. So will future spin rites be using the DriveIoControl function? Like a SR driver? I know from Pavel that one can use ReadFile and WriteFile also for drivers. The RTFDeviceIoControl function is not the same as windows, the signure does not include input and output buffers and rather than a handle it uses a pointer? It really looks like it only does four things based on the control codes. I was just wondering because I thought Steve said the reason he went with on-time os was it is what he already knows from Windows and because future SR would be easier to move to Windows. Something like SR would certainly need a Windows Driver to work. Just trying to connect the dots with all the information in my head. Thanks.
 
On August 20th (same date of this posting) you sent me a direct message asking me to answer some of your questions here. Please understand that if I hang out here we're never going to get the other new goodies that we all want. So I'm not generally hanging out here.

That said, yesterday I needed to come over here to quickly check on the version of PHP I'm using on these servers. And in being here I encountered a thread to which I recent answered. By coincidence it happens to contain from answers to the questions you posted above. That posting is here.

The bottom line to your more specific question is that I purchased the entire source code for the RTOS-32 operating system specifically so that I would be able to add any missing functionality that SpinRite might need. SpinRite will definitely need access to drive “metadata.”

To that end, RTOS-32 already defines its RTFDeviceIoControl perfectly for my needs. The fact that it allows a pointer to be passed is all I need since that means that the pointer can point to anything I want. That might be another structure which itself contains pointers to input and output buffers. The point is, just giving me a single pointer allows for any expansion that might be needed. :)

(Please do not reply to this asking for or expecting any further replies. I will probably not see them since I'm not really here, yet. :)
 
  • Like
Reactions: SeanBZA