Текущий архив: 2003.11.17;
Скачать: CL | DM;
ВнизВылетает ошибка.. в чем дело? Найти похожие ветки
← →
незнай-ка (2003-11-05 13:35) [0]ривет..
Читаю сектора диска в буффер и т.д... все работает как полагается, НО
как только я меняю размер любого окна или перетаскиваю его (explorer и
т.п.) вылетает ошибка:"Not enought storage is available to process
this command" или "Access Denied" Ошибка появляется в этом блоке:
pos64 := sectornum * BLOCKSIZE;
n := Windows.SetFilePointer( hDevice, rPos64.Lo, @rPos64.Hi, FILE_BEGIN );
rc := GetLastError;
if rc<>NO_ERROR then
begin
AddToLog(SysErrorMessage(rc));
Exit;
end;
В ЧЕМ БРОБЛЕМА?!
P.S. На всякий случай приведу всю функцию, хотя она достаточно стандартная:
function TMainForm.ReadSector( const hDevice : THandle; const sectornum : int64) : Boolean;
var
rc : DWORD ;
n : DWORD ;
pos64 : int64 ;
rPos64 : int64Rec absolute pos64 ;
begin
Result := False;
pos64 := sectornum * BLOCKSIZE;
n := SetFilePointer(hDevice , rPos64.Lo, @rPos64.Hi, FILE_BEGIN );
rc := GetLastError;
if rc<>NO_ERROR then
begin
AddToLog(SysErrorMessage(rc));
Exit;
end;
if n <> rPos64.Lo then rPos64.Lo := n;
if not Windows.ReadFile( hDevice, HDDBuffer[0], BLOCKSIZE, n, nil ) then
begin
AddToLog(SysErrorMessage(GetLastError));
Exit;
end;
Result := true;
end;
С Уважением,
Игорь.
← →
нез-найка (2003-11-05 15:12) [1]Хм.. дело в том, что вызывается эта функция в цикле и мне приходитmся вставлять Application.ProcessMessages в тело цикла чтоб работали таймеры, счетчики и т.п.. КАК ТОЛЬКО УБИРАЮ Application.ProcessMessages ошибок больше не выдается, но и все остальное соответственно не работает... Че делать то? =(
Страницы: 1 вся ветка
Текущий архив: 2003.11.17;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.015 c