![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| tensor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.8.2008 Репутация: нет Всего: нет |
Приветствую, коллеги.
Пишу так называемый portable application. При вставке флешки приложение запускается через autoplay/autorun и работает с данными на ней. Однако, есть вероятность, что флешку выдернут во время работы программы и программа обрушится. В ходе натурных экспериментов такое поведение понаблюдал. Как с этим бороться? Нужно, чтобы программа выдала пользователю сообщение с претензией, какой он нехороший, и если пользователь обратно не вставит флешку, то спокойно выйти. Проблема мне видится в следующем: при выдергивании флешки, страница с кодом или данными может не оказаться загруженной в физическую память, и при обращении к ней происходит сбой доступа и программа падает. Соответсвенно одним из путей решения может быть принудительная загрузка всего exe в память. Как это можно сделать? Второй путь - запуск процесса из "памяти", т.е. без соответствующего физического файла в фаловой системе. Такое вообще возможно? Временный файл не подойдет, т.к. при одно из требований - чтобы программа не могла остаться в файловой системе компьютера ни при каких условиях. Нужно, чтобы работало в Windows XP(2003) и Vista (2008). Опционально в Windows 2000. Может кто статейки встречал на эту тему? Нагуглить ничего дельного не удалось. |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 1 Всего: 37 |
ИМХО проблема в подгрузке ресурсов, если у тебя своп не на флешке и не 64 Мб RAM Это сообщение отредактировал(а) Sartorius - 17.8.2008, 21:13 |
|||
|
||||
| tensor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.8.2008 Репутация: нет Всего: нет |
Падает в разных местах, причем иногда падает, иногда нет, отладчик еще не цеплял, завтра на работе более детально посмотрю.
Вот про 64 RAM это дельная подсказка, надо будет вирталку сделать и более детально посмотреть в каких местах оно спотыкается. Может есть какие методы чтобы в PE файле выставить флаги, чтобы весь exe грузился в память вместе с ресурсами? |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 1 Всего: 37 |
А зачем? Тебе же надо
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=64533 лови отключение устройства: Это сообщение отредактировал(а) Sartorius - 17.8.2008, 21:28 |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
может имеет смысл делать мелкий загрузчик, который всю программу скопирует на жеский и впоследсвии будет всё что нужно тянуть оттуда?...
т.к. отследить момент вытаскивания флешки впринципе нельзя - вы узнаете о нем слишком поздно, чтобы чтото сделать.. тем более неизвестно как себя ведет винда с процессами... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 10 Всего: 124 |
Visual C++ Linker Options
/SWAPRUN (Load Linker Output to Swap File) Насчёт флэшки не уверен, но пишут ведь:
|
|||
|
||||
| tensor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.8.2008 Репутация: нет Всего: нет |
Похоже, это то что мне надо.
Еще есть editbin с такой же опцией. Однако надо будет потестить и с отключенным swap файлом, как оно будет себя вести. |
|||
|
||||
| tensor |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.8.2008 Репутация: нет Всего: нет |
Еще можно пройтись по всем страницам в PE и записать туда чего-нибудь, подробнее здесь
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |