Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Вниз

Delphi: Чтения бит с CD диска   Найти похожие ветки 

 
Artin   (2004-10-08 20:49) [0]

Здравствуйте.
Мне надо прочитать с диска(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?


 
Cobalt ©   (2004-10-08 21:45) [1]

попробуй открыть файл
\Device\CdRom1


 
tesseract   (2004-10-11 09:41) [2]

re: Cobalt
попробуй открыть файл
\Device\CdRom1

Да и посмотри описание CreateFile, REadFile, SetFilePointer и тд...

А можешь и DEVICE_IO_CONTROL


 
Artin   (2004-10-11 21:22) [3]

Cobalt,tesseract
\Device\CdRom1
Пробовал. Пишет не могу открыть фаил.


 
Fay ©   (2004-10-11 21:44) [4]

Попробуй что-нибудь типа этого.
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;


 
tesseract   (2004-10-12 12:27) [5]


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-12 12:51) [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 не нашёл и этого. Странно.


 
SammIk ©   (2004-10-12 18:22) [7]

Во-первых, прочитать биты с диска нельзя!!(да ивообще их нельзя прочитать нигде).
Во-вторых нужно сходить на васм да посмотреть статьи Касперского.
И подождать его книги. Можно сходить на его саит и скачать пару глав из нее.


 
Artin   (2004-10-12 21:52) [8]

Fay ©
Большое спасибо это то что нужно!

tesseract
Моя товю не понимает :(
Обьесни тольком как надо писать для 98. Читал спарвку в дельфи сходу нечего не понятно.


 
tesseract   (2004-10-13 11:05) [9]

Пояснение :
 в NT требуется открыть ус-во, его и открываем по полному имени- "\\.\A:", так например и COM , больше девятого открыть "\\.\COM125"
 в 9x надо обращаться к драйверу - "\\.\vwin32" тк обратились к драйверу, то на ReadFile можно забить.
  DEviceIOControl - пишем как в Asm регистры и команды и посылаем драйверу (купи себе "программирование в Delphi 7" от BHV - там есть пример чтения с дискеты)

to Sammik ^
 
Во-первых, прочитать биты с диска нельзя!!(да ивообще их нельзя прочитать нигде).

Точно биты нельзя! а байты можно!  статьи Касперского - такжи хороши как и его антивирус - никакой пользы.

Если прочитать/записать нельзя, как же винда к диску обращается???????


 
Jel ©   (2004-10-13 15:05) [10]


> статьи Касперского - такжи хороши как и его антивирус -
> никакой пользы.

Неудивительно. Статьи пишет Крис Касперски, а антивирус Евгений Касперский :)


 
Artin   (2004-10-14 21:29) [11]

tesseract
Купить книгу конечно надо, я уже прочитал одну книгу но она из раздела для чайников. А на нормальную книжку денег пока жалка(я студент, это по работе мне, очень надо а денег на книгу на работе наверно не выделят (гос учреждение :()). Если не трудно отскань и скинь мылом. mailto: atomm@mail.ru
Я, конечно, постараюсь разобраться.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.866 c
14-1100279610
vertal
2004-11-12 20:13
2004.11.28
Блокировка удаления exe во время его исполнения в Win NT(2000)


8-1093530110
Dimman
2004-08-26 18:21
2004.11.28
ScreenShot в файл средствами Win API


14-1100011383
matt
2004-11-09 17:43
2004.11.28
CAN-контроллеры


4-1098156661
Боян Георгиев
2004-10-19 07:31
2004.11.28
Как узнать если процес запущен


1-1100456123
CyberNETic
2004-11-14 21:15
2004.11.28
Проблема с TabControl





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский