Почему не работает эта либа в win7 , ставлю стандартный хук на любую функцию, например так Код (Text): function Nsend(s:tsocket; var buf; len, flags: integer): integer;stdcall; begin Result:=Tsend(s,Buf,len,flags); end; При переходе на строчку Result:=Tsend(s,Buf,len,flags); процесс в котором перехват вылетает с ошибкой. В отладчике толком посмотреть не могу, т.к. плохо разбираюсь в таких вещах.
в функции HookCode Код (Text): GetMem(OldFunction, 255); измени способ выделения памяти на VirtualAlloc
ставлю OldFunction:=virtualalloc(nil,255,MEM_COMMIT or MEM_RESERVE,PAGE_READWRITE); также вылетает с ошибкой
Ща тебе прочтут лекцию при наличии соответствующего настроения у Клерка про использование сексуальной обработки исключений и генерации собственного сепшина для отлова функции.
d2k9 Нет желания читать лекцию. Способов множество, не только сепшены - калбэки, синхронизация(бесконечные циклы ожидания), системные ошибки и пр.
Все вышеперечисленное не относится к стабильности и совместимости, учитывая задачу ТС, когда функция send может вызываться немерянное количество раз из десятков потоков.
JohnFive Почему не стабильно ? Это зависит не от техники, а от кривости рук автора. Даже такой тяжёлый способ захвата как трассировка никак не скажется на скорости работы этой функи.