Добрый день, внедрил dll в нужный процесс для анализа трафика, установил хук на функцию Send чтобы контролировать передающиеся пакеты,
Код:
1 2 3 4 5 6 7 8 9 10 11 12 | var
TwsSend: function (s: TSocket; var Buf; len, flags: Integer ): Integer ; stdcall;
HookProc( 'WS2_32.dll' , 'send' , @NewSend, @TwsSend);
function NewSend(s: TSocket; var Buf; len, flags: Integer ): Integer ; stdcall;
begin
if blockpacket
then result:=- 1
else
Result := TwsSend(s, Buf, len, flags);
end ;
|
Вот если я задам blockpacket:=true и процесс выполнит передачу пакетов то они блокируются и не передаются на сервер как нужно, но после этого если установлю blockpacket:=false то все эти блокированные пакеты разом передаются на сервер, получается блокированные пакеты накапливались и потом отправились одним пакетом, каким образом можно очистить эту очередь или правильно отменять их, чтобы запретить так запретить отправку пакетов когда blockpacket=true.