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

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

Запуск сервиса из памяти [D4, D5, D6, D7, Win2k, WinXP]


ZHK ©   (2003-09-15 09:51:00) 

Есть сервис, кем-то написанный. Он в файле, с расширением *.sys. Хочу скомпилировать его вместе с программой и запускать из памяти. Но в CreateService вижу только параметр lpBinaryPathName и никаких путей к решению моей проблемы. То есть, решение, конечно же, есть. Создать менеджер, вызвать CreateService, рассказать ей, где находится файл и все. В принципе, работает. Но хочется большего...


Digitman   (2003-09-15 12:22:00) [1]


> ZHK


судьбу не искушай)
но про структуру PE-модулей и хотя бы общие принципы работы системного механизма их загрузки все же почитай, коль заинтересовался... уверяю - не без пользы время потратишь, многие "страшные системные тайны" станут прозрачней и понятней


ZHK   (2003-09-15 12:07:00) [2]

Я, конечно же, не буду спорить с умными людьми. Да и доказывать свою несостоятельность тоже. Просто жаль, что данную проблему нельзя обойти. Я думал, то все попроще будет. Что ж, спасибо за наставление на путь истинный. Не буду искушать судьбу и Билла Гейтса. :-)


Digitman   (2003-09-15 11:52:00) [3]


> ZHK



> Так почему бы не обойти ненужные операции с диском?


в случае именно с EXE не обойдешь ты их никак... разве что разместив временный файл на виртуальном RAM-диске... и даже в этом случае операций с физ.диском вряд ли избежать : свопинг в Win32 никто еще не отменял, на нем базируется весь механизм страничной адресации памяти

практически можно лишь эмулировать загрузку DLL, написав собственный загрузчик и обойдя при этом какие-то стандартные для штатного загрузчика файловые операции ... но ограничения в использовании загруженной таким образом DLL будут существенные, и никто не гарантирует при этом полную совместимость твоего механизма загрузки с прочими системными DLL-механизмами ... учитывая еще и то, что загрузка DLL не вызывает старт нового процесса, польза от реализации собственного загрузчика весьма и весьма сомнительна в большинстве прикладных задач


HolACost!   (2003-09-15 11:38:00) [4]

Почитай про ето где-нить, ато просто не поймёшь пока не узнаешь как всё происходит!


ZHK   (2003-09-15 11:31:00) [5]

Да, пока не представляю, но все равно не пойму, в чем разница между двоичным образом в памяти и на диске. Просто доступ по разному, а операции технологические и так пройдут. Ведь, допустим, простейший вариант. Беру кусок памяти с образом сервиса. Копирую это на диск, в файл, открываю его с диска. Ведь работать-то будет. Так почему бы не обойти ненужные операции с диском?


Digitman   (2003-09-15 11:27:00) [6]


> ZHK


> странно, какая разница винде. Что из файла в базу сервис-то
> подгрузить, что из памяти, скажем через поток... Беда. :-)


большая разница.
ты , видимо, не представляешь себе, что конкретно происходит при загрузке системой PE-модуля.

это далеко не просто копирование образа модуля из файла в память !
масса сложных технологических операций производится в ходе "загрузки" системой исполняемого кода


ZHK   (2003-09-15 11:21:00) [7]

Да, Игорь Шевченко тож самое сказал. Хотя в общем то странно, какая разница винде. Что из файла в базу сервис-то подгрузить, что из памяти, скажем через поток... Беда. :-)


HolACost!   (2003-09-15 11:14:00) [8]

IMHO, нет! Не осуществимо!


ZHK   (2003-09-15 11:07:00) [9]

В смысле я хочу скомпилировать ресурс, засунуть файл сервиса к себе в программу, так, чтобы она не валялась на диске отдельно. Создав ресурс - при запуске программы могу получить указатель на область памяти, где, собственно, файл сервиса висит. Что делать дальше? Я пока в затруднении. Вот так. А исходника нет, потому как и решения проблемы еще нет, а программулина начнется как раз с запуска сервиса из памяти, если это осуществимо.


HolACost!   (2003-09-15 10:11:00) [10]

"Хочу скомпилировать его вместе с программой и запускать из памяти." - поясни фразу? - у тебя до этого написано много интересного - исходник есть?


Наверх

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