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

Вниз

процеду ра ловушки   Найти похожие ветки 

 
dit   (2003-12-24 11:40) [0]

можно ли использовать функции типа writeln и подобные в hookproc


 
Digitman ©   (2003-12-24 11:59) [1]

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


 
shluz ©   (2003-12-25 00:53) [2]


> с т.з. здравой логики и смысла - непонятно зачем

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

почему так?? операции на чистом API не вызывают проблем, в то время, как delphi-проц. приводят действительно к разрушению потоков, процессов и даже системы..хотя они в конечном итоге имеют те-же самые вызовы APi


 
Digitman ©   (2003-12-25 08:46) [3]


> например, запись в файл


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


> операции на чистом API не вызывают проблем


какие ? конкретно ?


 
shluz ©   (2003-12-26 00:10) [4]

ну примерно так :
q:=windows.CreateFile("c:\hook.txt",GENERIC_WRITE,FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0);
try
fileseek(q,0,2);
WriteFile(q,fHead^,1,i,nil);
...


 
Digitman ©   (2003-12-26 08:35) [5]

writeln() в конечном итоге вызывает тот же WriteFile(), но вот предыдущий Rewrite() (который, соответственно, вызывает где-то внутри себя CreateFile) задает иные опции совместного доступа к файлу ... не возьмусь утверждать (проверить нужно, что достаточно просто), но скорей всего опция FILE_SHARE_WRITE не фигурирует там... кроме того - читаем хэлп - " If an external file with the same name already exists, it is deleted and a new empty file is created in its place."


 
Digitman ©   (2003-12-26 08:40) [6]

а вообще крайне нежелательно в процедуре ловушки манипулировать такими сложными и ресурсоемкими операциями как открытие/закрытие файла и работа с ним ... процедура ловушки должна отрабатываться как можно быстрей, чтобы не "тормозить" исполнение прочих ловушек в hook chain

поэтому и настоятельно рекомендую [3]


 
shluz ©   (2003-12-26 10:02) [7]

и тут метод, как я понимаю , файлы спроецированные в память?


 
Digitman ©   (2003-12-26 10:54) [8]

необязательно.
смотря что и как тебе в рез-те протоколировать нужно
можно обойтись и без MMF



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

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

Наверх




Память: 0.48 MB
Время: 0.015 c
3-5976
Карелин Артем
2004-02-05 12:25
2004.03.03
Структура таблиц для поисковика на FireBird.


3-5988
Rater
2004-02-05 09:37
2004.03.03
Глюк? При создании dbf и последующем открытии.


6-6171
NewD
2003-12-26 13:46
2004.03.03
Как переадресовать запрос на др. комп. в др. сети


3-5978
Sable
2004-02-05 00:50
2004.03.03
ИНДЕКСЫ, ИНДЕКСЫ, ИНДЕКСЫ.........


1-6156
Digitman
2004-02-19 12:16
2004.03.03
TListView.OnDeletion