Главная страница
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.016 c
1-78985
Jul
2003-11-14 13:31
2003.11.24
опять Excel - CoInitialize has not been called


14-79121
Слэш2
2003-11-01 11:34
2003.11.24
Где в инете значки есть на кнопки?


1-78907
Unknown
2003-11-12 12:09
2003.11.24
Dll


1-78981
Алла
2003-11-14 14:42
2003.11.24
Будте добры, как с помощью GetDC


8-79055
Шустрый
2003-07-29 20:19
2003.11.24
Mediaplayer1.savetofile(savedialog1.filename); ???