![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В чем причина ошибки
salexn © (2006-06-16 13:16:00)в одной из функций программы "доставал" карту диска: занятые-свободные кластера. Использовал след. структуру
TVOLUME_BITMAP_BUFFER = record
StartingLcn: LONGLONG;
BitmapSize: LONGLONG;
Buffer: array[0..32768] of byte;
end;
для функции DeviceIoControl(Handle, FSCTL_GET_VOLUME_BITMAP...
На некоторых системах стала "падать". Заменил 32767 на 4095 - перестало. Из-за чего это может быть? Т.е. мне интересно добраться до сути проблемы. Вроде как не должен влиять размер(в разумных пределах) на работоспособность
salexn (2006-06-20 16:49:00) [1]Т.е. особый интерес почему на одних системах/компьютерах работает, на других - нет.
salexn (2006-06-20 16:48:00) [2]Так дело в этом? Уважаемый Игорь Шевченко, если не трудно, объясните в чем причина.
Игорь Шевченко (2006-06-20 16:43:00) [3]salexn (20.06.06 16:40) [8]
Скажи packed record
salexn (2006-06-20 16:40:00) [4]Прикол в следующем. SizeOf(TVOLUME_BITMAP_BUFFER) = 32792!!! Хотя если посчитать "руками" - должно быть 32785!!! Может дело в этом?
salexn (2006-06-20 16:40:00) [5]Прикол в следующем. SizeOf(TVOLUME_BITMAP_BUFFER) = 32792!!! Хотя если посчитать "руками" - должно быть 32785!!! Может дело в этом?
salexn (2006-06-20 16:37:00) [6]Просто AV на выполнение DeviceIoControl(Handle, FSCTL_GET_VOLUME_BITMAP...
Игорь Шевченко (2006-06-20 16:19:00) [7]salexn (20.06.06 16:07) [4]
Речь об этом. Кстати, как выглядит "падение" ?
salexn (2006-06-20 16:07:00) [8]>Игорь Шевченко
Если речь о data execution prevention то не знаю, возможно что включен. Причем только на Windows 2000. И не на всех... На виртуалке ставил - все нормально.
А может быт из-за этого?
Игорь Шевченко (2006-06-20 15:59:00) [9]
> но на 2-х машинах - вылетает.
DEP ?
salexn (2006-06-20 15:57:00) [10]>GanibalLector
Проблема то в чем? В переполнении стека или в чем. В некоторых источниках под буфер отводится 65К. Пробовал, на большинстве машин также не падает, все работает ок, но на 2-х машинах - вылетает. Не могу понять просто - из-за чего? Конечно можно "забить" и сказать: работает - и пусть работает. Но в чем проблема?
GanibalLector (2006-06-17 00:50:00) [11]Взглянули бы в Google,например ;) Buffer: array [0..0]of byte;