Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Эмуляторы отечественных компьютеров (http://zx-pk.ru/forumdisplay.php?f=61)
-   -   Эмулятор терминала типа VT52 (http://zx-pk.ru/showthread.php?t=20092)

Titus 2nd January 2013 17:58

Фух, довел хотя бы до 37Кб)

---------- Post added at 16:53 ---------- Previous post was at 16:52 ----------

Quote:

Originally Posted by Patron (Post 563966)
Сборка статическая - код реализации всех использованных в коде вызовов прилинкован к "телу" DLL.

Слишком много прилинковывается. Разве оно ВСЕ надо? Или это просто стандартный набор?

---------- Post added at 16:54 ---------- Previous post was at 16:53 ----------

Вот ЭТО нужно все?

Quote:

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib


---------- Post added at 16:58 ---------- Previous post was at 16:54 ----------

Quote:

Originally Posted by Patron (Post 563959)
Хук будет работать только тогда, когда загрузившая эту DLL программа обрабатывает сообщения.

Почему?

Patron 2nd January 2013 18:15

Quote:

Originally Posted by Titus (Post 563967)
Почему?

Без понятия.

Мне ещё ни разу не удалось заставить работать хук в такой программе, которая не обрабатывает сообщения, или в то время, когда программа почему-то перестаёт обрабатывать сообщения.

---------- Post added at 16:15 ---------- Previous post was at 16:14 ----------

Quote:

Originally Posted by Titus (Post 563967)
Вот ЭТО нужно все?

Прилинковывается только тот код, который реально вызывается в DLL.

Titus 2nd January 2013 18:22

Quote:

Originally Posted by Patron (Post 563977)
Прилинковывается только тот код, который реально вызывается в DLL.

Прилинковывается та библиотека из этого списка, функции которой используются, остальные нет? Возможно в твоем проекте и так.

А когда я сделал голый проект библиотеки в Вижуал Си, там все было вроде то же самое, но размер итогового файла был 160кб, а у тебя 80кб. Правда, оптимизациями я его уже довел до 37кб, что вообще приемлимо.

Patron 2nd January 2013 18:25

Quote:

Originally Posted by Titus (Post 563982)
оптимизациями я его уже довел до 37кб, что вообще приемлимо.

Размер файла роли не играет. Windows файлы в память не грузит, а запускает на выполнение "прямо с диска". Поэтому, если какой-то код есть в файле, но не используется - такой код так и останется на диске, ни разу не попав в память.

Titus 2nd January 2013 18:29

Quote:

Originally Posted by Patron (Post 563984)
Размер файла роли не играет. Windows файлы в память не грузит, а запускает на выполнение "прямо с диска". Поэтому, если какой-то код есть в файле, но не используется - такой код так и останется на диске, ни разу не попав в память.

Мне кажется, ты ошибаешься)

Да и размер либы мне важен в комплекте с эмулятором.

Patron 2nd January 2013 18:34

Размер важен лишь в смысле размера архива. При запуске файла - Windows просто помечает его как специальный файл подкачки, считывая данные оттуда только при промахе системы виртуальной памяти.

Titus 2nd January 2013 18:54

Quote:

Originally Posted by Patron (Post 563989)
При запуске файла - Windows просто помечает его как специальный файл подкачки, считывая данные оттуда только при промахе системы виртуальной памяти.

Ужас) В какое время мы живем)

Patron 2nd January 2013 19:09

Quote:

Originally Posted by Titus (Post 564000)
Ужас) В какое время мы живем)

При запуске со съёмных носителей и сетевых приводов - файл EXE считывается целиком и не лочится в качестве файла подкачки.

Поэтому, чтобы после запуска на выполнение гибридных файлов DskExe ( которые я научился делать ровно год назад ) их можно было не только читать, но и писать - надо научиться устанавливать из эмулятора виртуальный файл-сервер и перезапускать эмуляторную часть файла DskExe оттуда.

Titus 2nd January 2013 19:24

Какой формат должна иметь какая-либо вызываемая функция в библиотеке, кроме DllMain(), которая инициализирует либу? И в каком виде ее передавать в GetProcAddress() при открытии либы? Прям в таком же добуквенном?

Вот чего интересного нарыл про работу с хуками. Только пока не понял, как сегменту присвоить значение FIXED. И что оно значит вообще.

Quote:

DLL можно и не загружать если в небольшой программке сделать все сегменты FIXED через def-файл, и там не нужно будет вызывать даже MakeProcInstance - всё будет и так работать.

Patron 2nd January 2013 19:32

Quote:

Originally Posted by Titus (Post 564014)
как сегменту присвоить значение FIXED

Судя по тому, что хуки у VisualStudio прекрасно работают из EXE - там всё так и есть.

Quote:

Какой формат должна иметь какая-либо вызываемая функция в библиотеке, кроме DllMain(), которая инициализирует либу? И в каком виде ее передавать в GetProcAddress() при открытии либы?
А зачем это надо в данном случае, когда хук (по идее) должен устанавливаться вызовом LoadLibrary.

Создаётся файл лога после вызова LoadLibrary( "Hook_DLL.dll" ) ?


All times are GMT +4. The time now is 02:42.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.