Копирование без границ или передовые методики защиты CD


Star-force своими руками - часть 2


Так же она должна измерять скорость вращения привода, чтобы во-первых, определить постоянство временных замеров (пляшут ли они как пьяные человечки или нет), а во-вторых скорректировать формулу для вычисления угла, ведь как легко показать, чем быстрее вращается диск, тем скорее "уплывает" сектор.

Исходный текст "измеряющей" программы приведен ниже:

//-[чтение сектора с диска]---------------------------------------------------

// ARG:

//     CD     указатель на строку с именем провода (например, "TEAC"),

//            адрес на ASPI-шине (например, "1.1") или имя диска("\\.\G:");

//            первые два варианта работают через ASPI, последний через SPTI;

//

//     buf    указатель на буфер SECROR_SIZE*2

//

//     sector номер сектора в LBA-формате

//

// RETURN:

//     0     успешно

//     -1     ошибка

read_from_cd(char *CD, unsigned char *buf, long sector)

{

       int stat;

       stat=cd_raw_sector_read(CD, buf, SECTOR_SIZE, sector, ONE_SECTOR, W_USER_DATA);

       if (stat == SCSI_OK) return 0; return -1;

}

 

//-[чтение TSC-счетчика]------------------------------------------------------

unsigned int A()

{

       __asm{

       _emit  0xF    ; RDTSC

       _emit  0x31

       }

}

 

#define argCD        v[1]

 

// КОНФИГУРАЦИЯ

//----------------------------------------------------------------------------

 

// номер первой точки измерения (LBA-адрес)

// данная утилита измеряет топологию только по одной точке,

// что не есть хорошо, т.к. легко подобрать похожий диск

// для уверенности следует выбрать несколько точек:

// в начале, середине и конце диска

#define _CFG_BGN_SEC_      17699

 

// кол-во секторов для измерения

// должно быть не меньше утроенного кол-ва секторов на виток в данной

// точке измерения (см. _CFG_BGN_SEC_ )

// число витков спирали N с поперечной плотностью D витков/мм

// от радиуса R1 до радиуса R2 определяется формулой: N = (R2- R1) * D




- Начало -  - Назад -  - Вперед -