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

Вниз

Клонировать процесс в Windows   Найти похожие ветки 

 
Fktrc ©   (2005-01-13 08:07) [0]

Возможно ли это? Если да, то где про это можно прочитать?


 
Digitman ©   (2005-01-13 08:52) [1]

что подразумевается под клонированием ?


 
Fktrc ©   (2005-01-13 10:20) [2]

2Digitman
подобие fork() из Unix


 
Digitman ©   (2005-01-13 10:42) [3]


> Fktrc ©   (13.01.05 10:20) [2]


каков же глубокий смысл подобного "клонирования" в Win32 ?
прокомментируй ..


 
Fktrc ©   (2005-01-13 10:56) [4]

Смысла нет никакого - захотелось узнать, возможно ли склонировать процесс под виндами.
Типа у нас запущен Word, мы его клонируем и хоп! второй ворд на экране, причем точная копия первого и даже курсор в том же месте текста мигает...

Тяжкие последствия вчерашнего праздника... :)


 
Игорь Шевченко ©   (2005-01-13 11:06) [5]


>  второй ворд на экране, причем точная копия первого и даже
> курсор в том же месте текста мигает...


Это нельзя. Точнее, очень и очень сложно


 
Digitman ©   (2005-01-13 11:41) [6]


> Fktrc ©   (13.01.05 10:56) [4]


как и предполагалось, ты точно не тот огород окучивать собрался ..


> Типа у нас запущен Word


ТИПА Word или конкретно Word ?
зачем, спрашивается, "клонировать" вордовый процесс, если решение задачи сводится к простейшим действиям :
- старту нового Ворда как олей-сервера
- коннекту к уже работающему Ворду как олей-серверу
- определение текущих настроек и рабочего контекста открытых документов в "старом" Ворде
- программное воспроизведение настроек и контекстов в "новом" Ворде


 
Fktrc ©   (2005-01-13 11:48) [7]

Что очень и очень сложно - это ясно, к примеру клон не будет иметь доступа к объектам ядра, иногда к файлам(зависит от режима открытия), и т.д., которые заняты оригиналом, все же это, хотя и полная копия, но все же отдельный от оригинала процесс.
Тот же самый клонированный ворд при попытке сохранения файла, открытого в первом как минимум вывалит ошибку, как максимум вывалится сам :)
Но было бы очень любопытно посмотреть на пример клонирования консольного Hello world. Нахватавшись верхушек, могу предположить, что для этого потребуется выделить память под код и данные, как-то заморозить все потоки клонируемого процесса, скопировать код и данные в выделенный буфер, изменить адреса согласно relocation table, если модуль окажется загружен по другому базовому адресу, установить режим доступа PAGE_EXECUTE для страниц памяти, куда у нас попадет код, и соотв. режим для страниц с данными, кучу дополнительных действий, о которых просто не в курсе, и в конце что-то типа установки EIP для клонированного процесса на ту же инструкцию, что и в оригинале.

Где-то я читал, что при запуске того же исполняемого файла второй раз код из него не читается, читаются только данные и грузятся в другие блоки памяти. Тогда код копировать и не потребуется...

Ну вот и вывалил все, что удалось разглядеть за туманом некомпетентности в этом вопросе. Хорошо бы рассеять туман...


 
Fktrc ©   (2005-01-13 11:49) [8]

Да, и не забыть "разморозить" оригинал :)


 
Игорь Шевченко ©   (2005-01-13 11:50) [9]


> Но было бы очень любопытно посмотреть на пример клонирования
>


Читать Гэри Неббета. У него есть пример реализации fork под NT-системами. Сложный пример.


 
Fktrc ©   (2005-01-13 11:57) [10]

//Игорь Шевченко ©   (13.01.05 11:50) [9]
//Читать Гэри Неббета. У него есть пример реализации fork под NT-системами. Сложный пример.
Ссылку на пример дайте, плиз.


 
Fktrc ©   (2005-01-13 12:07) [11]

Игорь Шевченко ©
Читать Гэри Неббета...

Все, что нашел в нете - только возможность заказать его книгу "Справочник по базовым функциям API Windows NT/2000" через веб...


 
Kerk ©   (2005-01-13 12:17) [12]

Fktrc ©   (13.01.05 11:57) [10]
вечером могу выложить в сеть


 
Fktrc ©   (2005-01-13 12:20) [13]

Kerk ©   (13.01.05 12:17) [12]
вечером могу выложить в сеть

Будет здорово.


 
Digitman ©   (2005-01-13 12:30) [14]


> Fktrc


универсальности алгоритма "клонирования" (в плане дальнейшей безусловной работоспособности клона и оригинала) ты не получишь .. на одной задаче клон+оригинал могутт и успешно работать, на другой же - получишь отлупы в виде исключений, по самое нехочу .. и связано это в 1-ю очередь как раз с неразделяемыми общесистемными ресурсами .. ты об этом как раз и упомянул в [7] касаемо коркретно Ворда и его "клона", когда оба пытаются манипулировать обним и тем же документом одновременно, при том что "клон" по определению не может предпринять никаких попыток к извещению системы о требуемой ему блокировке и захвате файлового ресурса


 
Fktrc ©   (2005-01-13 12:42) [15]

Digitman ©   (13.01.05 12:30) [14]Да это-то ясно... Мне просто любопытно, как реализовать алгорити из [7] без претензий на глобальную универсальность?


 
Digitman ©   (2005-01-13 13:03) [16]


> Fktrc


весьма и весьма сложно это (см. [5])
простое воссоздание регионов и их содержимого в АП клона не решает задачи .. необходимо грамотно и с полным пониманием дела работать с внутренними недок.структурами в АП оригинала с целью перечисления всех ОС-объектов, созданных оригиналом на момент клонирования, дабы точно в такой же последовательности воссоздать их (док.способами) в контексте клона


 
Fktrc ©   (2005-01-13 13:16) [17]

Digitman ©   (13.01.05 13:03) [16]
Ну раз fork() под NT сотворили [9], то принципиально это возможно. Kerk обещал пример выложить, посмотрю. Хотя и не к нашему рылу крыльцо, но все равно интересно.


 
Eraser ©   (2005-01-13 16:49) [18]

Fktrc ©
Средствами windows это сделать принципиально не возможно, для того, чтобы это сделать нужно изменить ядро системы непонятно в какую сторону ;-)) ведь не может же одновременно существовать 2 мьютекса с одинаковыми именами... и таких примеров очень много, и потом как обеспечить взаимодействие этих клонов???
Единственный вариант- подобие RAdmin"a.


 
Digitman ©   (2005-01-13 17:11) [19]


> Eraser ©   (13.01.05 16:49) [18]


а при чем здесь "имена" т.н. ОС-объектов ? если они таки подразумеваются по соглашениям Мелкомягких ?


> ведь не может же одновременно существовать 2 мьютекса с
> одинаковыми именами


да, не может .. равно как и ивента, и семафора, и ММФ .. и и менно потому при т.н. "клонировании" в полный рост возникает проблема организации КОРРЕКТНОЙ ссылки на уже СУЩЕСТВУЮЩИЕ объекты ядра


 
Kerk ©   (2005-01-13 17:15) [20]

Я дико извиняюсь, но не нашел книгу у себя. Про Native API есть. Второй нет нигде. :( Извините


 
Игорь Шевченко ©   (2005-01-13 17:53) [21]

Kerk ©   (13.01.05 17:15) [20]

Пример в книжке про Native API.


> Второй нет нигде


А что, Неббет написал вторую книжку ? :)

С уважением,


 
Burmistroff   (2005-01-13 18:20) [22]

про GN Native API есть на club.shelek.com


 
Burmistroff   (2005-01-13 18:20) [23]

т.е. не "про ..." ф сама книга иам есть :)


 
Kerk ©   (2005-01-13 19:18) [24]

Игорь Шевченко ©   (13.01.05 17:53) [21]
##$@#$! Это ж надо так проглючить! ЛОЛ


 
Fktrc ©   (2005-01-13 20:20) [25]

Burmistroff   (13.01.05 18:20) [23]
т.е. не "про ..." ф сама книга иам есть :)

Не нашел...


 
Kerk ©   (2005-01-13 20:32) [26]

Fktrc ©   (13.01.05 20:20) [25]
Native API у меня есть.. я выложу как обещал :)


 
Kerk ©   (2005-01-14 04:54) [27]

http://kerk.frandt.com/files/nebbet.rar


 
Fktrc ©   (2005-01-14 05:27) [28]

Kerk ©   (14.01.05 04:54) [27]
Спасибо!
Посмотрел пример, первая реакция - уй, blya :), вторая - надо ставить си и копать, копать и копать...



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

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

Наверх




Память: 0.54 MB
Время: 0.046 c
14-1108022975
boriskb
2005-02-10 11:09
2005.02.27
Следите за своими сайтами :)


1-1107966108
Sphinxx
2005-02-09 19:21
2005.02.27
Как превратить файл в строку?


1-1108128503
Джинн
2005-02-11 16:28
2005.02.27
Поведение Debuger а


3-1106724534
Bogdan
2005-01-26 10:28
2005.02.27
Типы данных


14-1107428519
ArMellon
2005-02-03 14:01
2005.02.27
Кому не лень...