Форум: "Система";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
ВнизЗапуск сервиса из памяти Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c