Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

В чем причина ошибки


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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо