![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Delphi: Чтения бит с CD диска
Artin © (2004-10-08 20:49:00)Здравствуйте.
Мне надо прочитать с диска(CD) первый бит затем бит из серединки и последний бит.
Причём мне надо замерить время между считыванием.
Фактически замерить время реакции головки CD-ROMа. По этому (время реакции головки) я нечего не нашел. Конечно, можно это сделать примерно так
var
File : file_f;
begin
assign(File,path_file);
reset(File,1);
// в цикл if EOF(File)
BlockRead(File,item,sizeof(item));
//Замеряем Timerом и высчитываем
//Конец цикла
end.
Но мне не нравиться, что надо явно указывать имя фиала.
Как читать биты прямо с CD?
Artin (2004-10-14 21:29:00) [1]tesseract
Купить книгу конечно надо, я уже прочитал одну книгу но она из раздела для чайников. А на нормальную книжку денег пока жалка(я студент, это по работе мне, очень надо а денег на книгу на работе наверно не выделят (гос учреждение :()). Если не трудно отскань и скинь мылом. mailto: atomm@mail.ru
Я, конечно, постараюсь разобраться.
Jel (2004-10-13 15:05:00) [2]
> статьи Касперского - такжи хороши как и его антивирус -
> никакой пользы.
Неудивительно. Статьи пишет Крис Касперски, а антивирус Евгений Касперский :)
tesseract (2004-10-13 11:05:00) [3]Пояснение :
в NT требуется открыть ус-во, его и открываем по полному имени- '\\.\A:', так например и COM , больше девятого открыть '\\.\COM125'
в 9x надо обращаться к драйверу - '\\.\vwin32' тк обратились к драйверу, то на ReadFile можно забить.
DEviceIOControl - пишем как в Asm регистры и команды и посылаем драйверу (купи себе "программирование в Delphi 7" от BHV - там есть пример чтения с дискеты)
to Sammik ^
Во-первых, прочитать биты с диска нельзя!!(да ивообще их нельзя прочитать нигде).
Точно биты нельзя! а байты можно! статьи Касперского - такжи хороши как и его антивирус - никакой пользы.
Если прочитать/записать нельзя, как же винда к диску обращается???????
Artin (2004-10-12 21:52:00) [4]Fay ©
Большое спасибо это то что нужно!
tesseract
Моя товю не понимает :(
Обьесни тольком как надо писать для 98. Читал спарвку в дельфи сходу нечего не понятно.
SammIk (2004-10-12 18:22:00) [5]Во-первых, прочитать биты с диска нельзя!!(да ивообще их нельзя прочитать нигде).
Во-вторых нужно сходить на васм да посмотреть статьи Касперского.
И подождать его книги. Можно сходить на его саит и скачать пару глав из нее.
Fay (2004-10-12 12:51:00) [6]2 tesseract (12.10.04 12:27) [5]
Это откуда? Не могу найти. В PSDK есть
Windows 95/98/Me: This technique does not work for opening a logical drive. Specifying a string in this form causes CreateFile to return an error.
На MSDN не нашёл и этого. Странно.
tesseract (2004-10-12 12:27:00) [7]
hd := CreateFile('\\.\A:', GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
Только для NT+ для 9x надо открывать vxd
hd := CreateFile('\\.\vwin32', GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
Fay (2004-10-11 21:44:00) [8]Попробуй что-нибудь типа этого.
const
BUF_SZ = 4096;
var
hd, hf, nr, nw : DWORD;
b : packed array[0..BUF_SZ - 1] of Byte;
label
Label_Next;
begin
hd := CreateFile('\\.\A:', GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
if hd = INVALID_HANDLE_VALUE then RaiseLastOSError;
hf := INVALID_HANDLE_VALUE;
try
hf := CreateFile('c:\Floppy.txt', GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_ALWAYS, 0, 0);
if hf = INVALID_HANDLE_VALUE then RaiseLastOSError;
goto Label_Next;
repeat
WriteFile(hf, b, nr, nw, nil);
Label_Next :
ReadFile(hd, b, BUF_SZ, nr, nil);
until nr = 0;
finally
CloseHandle(hd);
if hf <> INVALID_HANDLE_VALUE then CloseHandle(hf);
end;
Artin (2004-10-11 21:22:00) [9]Cobalt,tesseract
\Device\CdRom1
Пробовал. Пишет не могу открыть фаил.
tesseract (2004-10-11 09:41:00) [10]re: Cobalt
попробуй открыть файл
\Device\CdRom1
Да и посмотри описание CreateFile, REadFile, SetFilePointer и тд...
А можешь и DEVICE_IO_CONTROL
Cobalt (2004-10-08 21:45:00) [11]попробуй открыть файл
\Device\CdRom1