SetFilePointer по \\.\PhysicalDrive0

From
Alexei Duzhiy (2:5006/24.2)
To
All ()
Date
2003-01-22T21:59:14Z
Area
SU.WINDOWS.NT.PROG
Привет, All!

Правлю исходники bochs 2.0 чтобы он работал с физ. диском под NT. Формула для
расчета номера сектора там такая:

        logical_sector = (BX_SELECTED_CONTROLLER(channel).cylinder_no *
BX_SELECTED_DRIVE(channel).hard_drive->heads *
                  BX_SELECTED_DRIVE(channel).hard_drive->sectors) +
          (BX_SELECTED_CONTROLLER(channel).head_no *
BX_SELECTED_DRIVE(channel).hard_drive->sectors) +
          (BX_SELECTED_CONTROLLER(channel).sector_no - 1);

потом с полученым числом:

      LARGE_INTEGER off64;
      off64.QuadPart = offset*512;
      ::SetFilePointer((void*)fd, off64.LowPart, &off64.HighPart, whence);

и в результате корректно видится только начало диска. Как правильно высчитать
сектор из CHS ?

Alexei
... "Я знаю не больше чем написано в даташите,
--- поскольку лично данный контролер не применял." (q) AT
 * Origin:  (2:5006/24.2)