Please consider a donation to the Higher Intellect project. See https://preterhuman.net/donate.php or the Donate to Higher Intellect page for more info.

Difference between revisions of "Finding SSWAPed drives in C"

From Higher Intellect Wiki
Jump to navigation Jump to search
(Created page with "<pre> Finding SSWAPed drives in C If Stacker is installed, using the ST_PTR generated by the call to the detect_stacker() function as shown in Appendix...")
 
(No difference)

Latest revision as of 00:10, 23 May 2020

                     Finding SSWAPed drives in C


If Stacker is installed, using the ST_PTR generated by the call to 
the detect_stacker() function as shown in Appendix B of the Stacker version
2 manual, it is possible to determine what drives have been swapped using
SSWAP.  At offset 0x52 from ST_PTR is a signature, which consists of the
four characters 'SWAP'.  Following this four byte signature is a 26 byte
array, which contains the original drive numbers (0=A, 1=B, etc) for all
drives.  Each time SSWAP performs a swap of two drives, it interchanges
the corresponding entries in this array.

Using C notation, the structure is defined as follows:

ST_PTR + 52H --> struct swapmap
                    {
                    char swapSignature[4];    /*  'SWAP' */
                    char swapmap[26];
                    }

Note that swapmap[i] (where i=0 means A:, i=1 means B:, etc) contains the
"original" drive number for drive i.   That is, drive i was drive swapmap[i]
at boot time.  To find the inverse function (namely, what is the current
drive number of the drive that was drive j at boot time?), you need to search
the swapmap array to find j.  In other words, if swapmap[k]==j, then drive k
was drive j at boot time.