![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CreateFile [D5, NT4, WinXP]
OlegNik © (2008-12-25 12:12:00)var
hFile : THandle;
Tmp : LPDWORD;
INRT : Int64;
hFile := CreateFile (PChar(FileName),
FILE_ATTRIBUTE_READONLY,
FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if hFile = INVALID_HANDLE_VALUE then Exit;
INRT := GetFileSize (hFile, @Tmp);
StrError := PChar(SysErrorMessage(GetLastError));
StrError = 'Параметр задан неверно'
Не подскажите в чем дело, что за параметр?
От себя добавлю, что FileName является ВЗУ.
Открываю я этот файл(ВЗУ) для редактирования filesystem.
Конечно можно использовать цикл записи по n(512) байт, но
это уморительно долго.
И сразу второй вопрос.
Произвожу запись файла
ReadFile(FhDrive,GLArrayByte[0],SizeFile,br,nil)
(с одной стороны здорово разом файл размером SizeFile байт)
но возникает следущая задачка файл необходимо записывать в
разные места диска (ВЗУ файловая система QNX4 - кто знает тот плавал)
При записи файла размером 200м возникает не ловкая пауза перед пользователем.
Опять же поблочная запись, по блокам(512) позволяет пользователю
определить время на перекур по прогрессу, не подскажите как определить прогресс состояния
записи в в случае быстрой(не поблочной) записи ReadFile(FhDrive,GLArrayByte[0],SizeFile,br,nil)
Сергей М. (2008-12-25 13:02:00) [21]
> что в этом потоке крутить?
Крути все операции, за которые тебе стыдно перед юзером)
> думал может есть какие ловушки
Можно и без ловушек и без доп.потоков.
На то существует overlapped-ввод/вывод, а также порты завершения
см. все что касается OVERLAPPED-режима Create/Read/WriteFile
OlegNik (2008-12-25 12:44:00) [22]
> дополнительном кодовом потоке
что в этом потоке крутить? Я думал может есть какие ловушки, ну на
крайний запустить процесс секунды на 3 глянуть сколько и за что.
> GENERIC_READ or GENERIC_WRITE
заменил не помогло.
Сергей М. (2008-12-25 12:20:00) [23]GetFileSize
..
Parameters
hFile
Specifies an open handle of the file whose size is being returned. The handle must have been created with either GENERIC_READor GENERIC_WRITEaccess to the file.
> не ловкая пауза перед пользователем
Изловчись выполнять подобного рода операции в дополнительном кодовом потоке, тогда будет "ловкая пауза"