Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.014 c
1-79021
ChecheNeC
2003-11-14 22:41
2003.11.24
RxRichEdit


9-78744
vital
2003-05-18 16:33
2003.11.24
Ошибка MilkShape3d


8-79054
Landgraph
2003-07-26 11:38
2003.11.24
Камера


1-78926
Pepperok
2003-11-12 14:37
2003.11.24
Содержимое ListBox`a


4-79248
Armageddon
2003-09-30 11:03
2003.11.24
Как перехватить клик мыши не в собственном окне





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский