Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Вниз

Клонировать процесс в 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.039 c
1-1107968992
UVV
2005-02-09 20:09
2005.02.27
Чтение из Com-порта


3-1107158663
MAVOR
2005-01-31 11:04
2005.02.27
Заменить строчные на заглавные


9-1102088422
San'ka
2004-12-03 18:40
2005.02.27
Описание концепции игры кликомания.


14-1107444236
Almaz
2005-02-03 18:23
2005.02.27
Чего только не узнаешь :)


14-1107787760
juice
2005-02-07 17:49
2005.02.27
С++ Классы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский