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

Вниз

Работа с HDD   Найти похожие ветки 

 
Tsa   (2006-02-07 14:04) [0]

Добрый день подскажите пожалуйста как в Делфи можно работать с жеским диском на нихком уровне, "бегать" по секторам и т.п.


 
Fay ©   (2006-02-07 14:12) [1]

CreateFile не катит?


 
ZeroDivide ©   (2006-02-07 14:39) [2]

Приведенный ниже кусок кода написан для CD-ROM"а и под Windows NT:

var
   hCDROM: THandle;               // file handle to entire CD-ROM
   IoBuffer: Pointer;             // page-aligned buffer

const
 cd_name = "\\.\r:";

 // get a page-aligned buffer, required for direct IO operations
 IoBuffer := VirtualAlloc (nil, sector_size, MEM_COMMIT, PAGE_READWRITE);
 // connect to the CD-ROM directly, note the file name used....
 hCDROM := CreateFile (cd_name, GENERIC_READ, FILE_SHARE_READ, nil,
OPEN_EXISTING, 0, 0);
 if hCDROM = INVALID_HANDLE_VALUE then
   begin
   er := GetLastError;
   Raise Exception.Create (
     "Failed to connect to CD-ROM drive, error " + IntToStr (er));
   end;

Having connected, reading a sector:

function TForm1.read_sector (sect: integer;  var buf: cd_sector): boolean;
var
 byte_pos: integer;      // restricted to 2GB CDs by 32-bit byte address
 bytes_read: integer;    // number of bytes read from the CD
 OK: Boolean;            // result of the read
begin
 Result := False;                   // assume failure
 byte_pos := sector_size * sect;    // compute byte position on the CD
 // try to do a SEEK into the CD, if that works, do the actual read
 if SetFilePointer (hCDROM, byte_pos, nil, FILE_BEGIN) = byte_pos then
   begin
   // read a sector of data into our page-aligned buffer
   OK := ReadFile (hCDROM, IoBuffer^, sector_size, bytes_read, nil);
   // copy the sector of data to the caller"s buffer
   if OK then Move (IoBuffer^, buf, SizeOf (cd_sector));
   Result := OK;                    // return the result of the read
   end;
end;


 
ZeroDivide ©   (2006-02-07 14:41) [3]

Собственно для HDD так же, просто это я к тому, чтобы hCDROM не смущал.


 
Tsa   (2006-02-07 15:11) [4]

Спасибо !
а записать данные каким образом можно ?


 
Fay ©   (2006-02-07 15:11) [5]

WriteFile


 
Tsa   (2006-02-07 15:20) [6]

WriteFile запишет такимже образом по секторам


 
Fay ©   (2006-02-07 15:23) [7]

Это вопрос? Можно переписать его в недвусмысленную форму?


 
Tsa   (2006-02-07 15:25) [8]

Да вопрос забыл на брать ?


 
Fay ©   (2006-02-07 15:35) [9]

сдаюсь.
язык, вроде, знакомый, но не понятно ничего.


 
Tsa   (2006-02-07 15:53) [10]

:-) WriteFile запишет такимже образом необходимые денные (байты) по секторам,



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

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

Наверх




Память: 0.46 MB
Время: 0.037 c
15-1138909708
ctudent
2006-02-02 22:48
2006.02.26
Приглашаю коллег Дельферов!!!!


4-1134078315
spyrytus
2005-12-09 00:45
2006.02.26
Как отследить "Завершение работы".


15-1139056425
Alex_Korn
2006-02-04 15:33
2006.02.26
Самопроизвольное включение компьютера.


4-1133910781
Delphi_is_cool
2005-12-07 02:13
2006.02.26
Дождаться завершения потока


1-1137686133
DimonNew
2006-01-19 18:55
2006.02.26
неверное отображение кириллицы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский