WSADuplicateSocket возвращает -1, подскажите, почему? инжектирую dll делаю hook на функцию send (Socket) - тут все идеально вот код функции из инжектнутой dll Код (Text): function SendHookProc(s: TSocket; var Buf; len, flags: Integer): Integer; stdcall; var apph, app: HWND; source_handle,newhandle :HWND; WPI : LPWSAProtocol_Infoa; pcds : TCOPYDATASTRUCT; pes : Int; vwsadata : twsadata; begin if Not Sended then Begin //Флаг для того чтобы это происходило однажды apph:=FindWindow('TSimpleForm',nil); app :=FindWindow('Жертва.exe',nil); //В которую dll инжектнута WSAStartup(MAKEWORD(2,2), vwsadata); // на всяк случку, добавил это позже но результат не изменился pes := WSADuplicateSocket(S,apph,WPI); // ВОТ ТУТ ВОЗВРАЩАЕТ -1 ПОЧЕМУ???? ShowMessage(IntToStr(pes)); // Видно тут pcds.lpData := @WPI; pcds.cbData := SizeOf(WPI); apph:=SendMessage(apph,WM_COPYDATA,app,LParam(@pcds)); Sended := True; //Изменим флаг end; result:=SendNextHook(s, Buf, len, flags); //Вернем стандартный обработчик //FreeLibrary(HInstance); //незнаю как ее завершить end;