WSPConnect重写求教,该怎么处理

WSPConnect重写求教
我现在用的是SPI,我想自己写一个WSPConnect后实现 让该程序通过连接一个socks5代理来完成之后的通信。

function WSPConnect(s: TSocket; name: PSockAddr; namelen: Integer; lpCallerData: LPWSABUF;lpCalleeData: LPWSABUF; lpSQOS: LPQOS; lpGQOS: LPQOS; var lpErrno: Integer): Integer; stdcall;
var
sin:sockaddr_in ;
begin
sin := sockaddr_in(name^);
rizhi('拦截访问目标:'+PChar(IPtoStr(sin.sin_addr.S_addr) + ':' + IntToStr(ntohs(sin.sin_port))));
result:=NextProcTable.lpWSPConnect(s,name,namelen,lpCallerData,lpCalleeData,lpSQOS,lpGQOS,lpErrno);
end;


function WSPStartup(wVersionRequested: WORD; lpWSPData: LPWSPDATA;lpProtocolInfo: LPWSAPROTOCOL_INFOW; UpcallTable: WSPUPCALLTABLE;lpProcTable: LPWSPPROC_TABLE): Integer; stdcall;
var
WSPStartupFunc:LPWSPSTARTUP;
slibpath:string;
hlibhandle:hmodule;
begin
rizhi('启动:WSPStartup...');
if not GetHookProvider(lpProtocolInfo,slibPath) then
    begin
      result:=WSAEPROVIDERFAILEDINIT;
      exit;
    end;
OutputDebugString(pchar(slibpath));
hlibhandle:=loadlibrary(pchar(slibpath));
if hlibhandle<>0 then
    begin
      WSPStartupFunc:= LPWSPSTARTUP(GetProcAddress(hlibhandle,pchar('WSPStartup')));
      if Assigned(WSPStartupFunc) then
        begin
          rizhi('加载:Load library ok!');
          result:=WSPStartupFunc(wVersionRequested,lpWSPData,lpProtocolInfo,UpcallTable,lpProcTable);
          if result=0 then
            begin
              NextProcTable:=lpProcTable^;
              lpProcTable.lpWSPConnect:=WSPConnect;
              rizhi('加载成功:Hook ok!');
              exit;
            end;
        end
      else
        begin
          result:=WSAEPROVIDERFAILEDINIT;
        end;
    end
else
    begin
      result:=WSAEPROVIDERFAILEDINIT;
    end;
end;

------解决方案--------------------
现在有什么问题? 
------解决方案--------------------
up,楼主啥意思