Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.24;
Скачать: CL | DM;

Вниз

Запуск сервиса из памяти   Найти похожие ветки 

 
ZHK ©   (2003-09-15 09:51) [0]

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


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

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


 
ZHK ©   (2003-09-15 11:07) [2]

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


 
HolACost! ©   (2003-09-15 11:14) [3]

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


 
ZHK ©   (2003-09-15 11:21) [4]

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


 
Digitman ©   (2003-09-15 11:27) [5]


> ZHK


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


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

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


 
ZHK ©   (2003-09-15 11:31) [6]

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


 
HolACost! ©   (2003-09-15 11:38) [7]

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


 
Digitman ©   (2003-09-15 11:52) [8]


> ZHK



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


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

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


 
ZHK ©   (2003-09-15 12:07) [9]

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


 
Digitman ©   (2003-09-15 12:22) [10]


> ZHK


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



Страницы: 1 вся ветка

Текущий архив: 2003.11.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
3-78801
Yurij
2003-10-29 10:59
2003.11.24
Как импортировать данные с INI файла в базу Paradox


3-78768
MaD
2003-11-04 13:51
2003.11.24
Посогите построить SQL запрос


1-79010
Zelius
2003-11-14 16:48
2003.11.24
Достали Warnings! Как избавиться от них?


14-79162
Linda
2003-10-30 13:52
2003.11.24
Хочу!!!


4-79217
Sandman25
2003-09-30 17:31
2003.11.24
ExpandName?