Форум: "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.52 MB
Время: 0.037 c