| Автор
| Сообщение |
 TuXAPuK
Великий гонщик


Возраст: 26
Знак зодиака: 
Зарегистрирован: 12.09.2005
Сообщения: 714
Откуда: Великий город Рига... =Ъ
|
|
|
Цитата |
|
Жители форума у меня вот такой возник вопрос как можно узнать размер сектора диска при чтении через CreateFile
А то хочется сделать счётчик который бы по процентам показывал чтение из файла, а API функции возвращают только INVALID_FILE_SIZE... Я пробывал через GetFileSize, SetFilePointer - на последний сектор всёравно результат неправелный...
| delphi: | program driveimg; {$APPTYPE CONSOLE} uses SysUtils, Windows; var hFDrive : HFILE; hImgFile: HFILE; // pBuffer : array[1..(1024 * 64)] of Byte; // 64kb buffer pBuffer : array[1..(1024 * 1024)] of Byte; // 1mb buffer iBuffRe : DWORD; iBuffWr : DWORD; sEx : string; begin hFDrive := CreateFile('\\.\D:', GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0); if ( hFDrive <> INVALID_HANDLE_VALUE ) then begin hImgFile := CreateFile('disk.iso', GENERIC_WRITE, FILE_SHARE_READ, nil, CREATE_ALWAYS, 0, 0); if ( hImgFile <> INVALID_HANDLE_VALUE ) then begin iBuffRe := 1; while ( (ReadFile(hFDrive, pBuffer, SizeOf(pBuffer), iBuffRe, nil) = True) and (iBuffRe <> $0000) ) do begin WriteFile(hImgFile, pBuffer, iBuffRe, iBuffWr, nil); if ( iBuffRe <> iBuffWr ) then begin WriteLn('Error while writening image'); Break; end; Write(#4); end; WriteLn(#13#10#13#10'Write image OK'); CloseHandle(hImgFile); end else WriteLn('Image to output dissalowed.'); CloseHandle(hFDrive); end else WriteLn('No disk in drive...'); ReadLn(sEx); end.
|
_________________
 |
|
| В начало |
|
 |
|
|
 |
|