Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
[Win32] CD-ROM sector reading 22.09.01 10:20 Число просмотров: 988
Автор: :-) <:-)> Статус: Elderman
|
> Под WinNT все нормально. Под 9х обнаруживаю, что необходимо > обращатся к MSCDEX через прерывание 2Fh. Из 32 разрядного > приложения этого сделать нельзя. Или можно? Если верить > мелко мягким, придется писать две ДЛЛ, одна 32, другая 16 > разрядные. Есть такие у кого? И еще, как установить > скорость считывания с компакт диска по своему > усмотрению(например 2х).
Под Win32 лучше юзать WinASPI (wnaspi32.dll)
Для установки скорости используется команда 0xBB, но не все сидюки это поддерживают:
bool SetSpeed(int arg_0)
{
SRB_ExecSCSICmd var_50;
memset(&var_50, 0, sizeof (var_50));
var_50.CDBByte[0] = 0xBB;
var_50.CDBByte[2] = SpeedKb1x*arg_0 >> 8;
var_50.CDBByte[3] = SpeedKb1x*arg_0;
ExecSCSICommand(&var_50);
return (var_50.SRB_Status == SS_COMP);
}
bool ExecSCSICommand(PSRB_ExecSCSICmd arg_0)
{
arg_0->SRB_Cmd = SC_EXEC_SCSI_CMD;
arg_0->SRB_HaId = nAdapter;
arg_0->SRB_Target = SCSI_ID;
arg_0->SRB_SenseLen = SENSE_LEN;
arg_0->SRB_CDBLen = 0xC;
SendASPI32Command((LPSRB) arg_0);
while ( *(volatile char*) &arg_0->SRB_Status == SS_PENDING);
return (arg_0->SRB_Status == SS_COMP);
}
---
|
|
<programming>
|
[Win32] CD-ROM sector reading 22.09.01 08:53
Автор: Alex_K Статус: Незарегистрированный пользователь
|
|
Под WinNT все нормально. Под 9х обнаруживаю, что необходимо обращатся к MSCDEX через прерывание 2Fh. Из 32 разрядного приложения этого сделать нельзя. Или можно? Если верить мелко мягким, придется писать две ДЛЛ, одна 32, другая 16 разрядные. Есть такие у кого? И еще, как установить скорость считывания с компакт диска по своему усмотрению(например 2х).
|
 |
[Win32] CD-ROM sector reading 22.09.01 10:20
Автор: :-) <:-)> Статус: Elderman
|
> Под WinNT все нормально. Под 9х обнаруживаю, что необходимо > обращатся к MSCDEX через прерывание 2Fh. Из 32 разрядного > приложения этого сделать нельзя. Или можно? Если верить > мелко мягким, придется писать две ДЛЛ, одна 32, другая 16 > разрядные. Есть такие у кого? И еще, как установить > скорость считывания с компакт диска по своему > усмотрению(например 2х).
Под Win32 лучше юзать WinASPI (wnaspi32.dll)
Для установки скорости используется команда 0xBB, но не все сидюки это поддерживают:
bool SetSpeed(int arg_0)
{
SRB_ExecSCSICmd var_50;
memset(&var_50, 0, sizeof (var_50));
var_50.CDBByte[0] = 0xBB;
var_50.CDBByte[2] = SpeedKb1x*arg_0 >> 8;
var_50.CDBByte[3] = SpeedKb1x*arg_0;
ExecSCSICommand(&var_50);
return (var_50.SRB_Status == SS_COMP);
}
bool ExecSCSICommand(PSRB_ExecSCSICmd arg_0)
{
arg_0->SRB_Cmd = SC_EXEC_SCSI_CMD;
arg_0->SRB_HaId = nAdapter;
arg_0->SRB_Target = SCSI_ID;
arg_0->SRB_SenseLen = SENSE_LEN;
arg_0->SRB_CDBLen = 0xC;
SendASPI32Command((LPSRB) arg_0);
while ( *(volatile char*) &arg_0->SRB_Status == SS_PENDING);
return (arg_0->SRB_Status == SS_COMP);
}
---
|
|
|