Wsock32.cpp
上传用户:hulike2009
上传日期:2013-02-02
资源大小:72k
文件大小:19k
源码类别:

源码/资料

开发平台:

C++ Builder

  1. //****************************************************************
  2. //
  3. //      本文是在已发表的另一文章略加修改而成,
  4. //      先感谢前任怍者。
  5. //
  6. //      程序通过替换wsock32.dll 来监测winsock调用
  7. //      原wsock32.dll 该名为 wsock32.aaa        
  8. //      谁有兴趣修改得更好,请给我也送一份
  9. //      hjx321@21cn.com
  10. //      vchelp ID : 283 
  11. //
  12. //***************************************************************
  13. #include <windows.h>
  14. #include <stdio.h>
  15. #include "wsock32.h"
  16. #define Max_Data_Len 400
  17. #define DataFile  "c:\popsocket.txt"
  18. void SaveRecord(char *p)
  19. {
  20. FILE *fp=fopen(DataFile,"a+");
  21. if(fp!=NULL) {
  22. fprintf(fp,"%sn",p);
  23. fclose(fp);
  24. }
  25. //日志文件
  26. }
  27. void PrintData(FILE *pf, BYTE FAR *pdata,int len)
  28. {
  29. int i;
  30.     int size;
  31. size = len;
  32. if(size>Max_Data_Len) size=Max_Data_Len;
  33. for(i=0;i<size;i++) {
  34. if(pdata[i]<' ') {
  35. switch (pdata[i]){
  36. case 'n':
  37.             case 'r' :
  38.                 fprintf(pf,"%c",pdata[i]);
  39.     break;
  40. default:
  41.      fprintf(pf,"\%03d",pdata[i]);
  42. }
  43. }
  44. else fprintf(pf,"%c",pdata[i]);
  45. }
  46. fprintf(pf,"n");
  47. }
  48. int SaveRecvData(int socket, char FAR *p, int size)
  49. {
  50. FILE *fp;
  51. if(size<0) return size;
  52. fp=fopen(DataFile,"a+");
  53. if(fp!=NULL) {
  54. fprintf(fp,"call recv,  used socket=%d,len:%dn",socket,size);
  55. PrintData(fp,(BYTE *)p,size);
  56. fclose(fp);
  57. }
  58. return size;
  59. }
  60. void SaveSendData(int socket, char *p, int size)
  61. {
  62. FILE *fp=fopen(DataFile,"a+");
  63. if(fp!=NULL) {
  64. fprintf(fp,"call send, used socket=%d,len:%dn",socket,size);
  65. PrintData(fp,(BYTE *)p,size);
  66. fclose(fp);
  67. }
  68. }
  69. void SaveRecvfromData(char *addr,int port, char FAR * p, int size)
  70. {
  71. FILE *fp=fopen(DataFile,"a+");
  72. if(fp!=NULL) {
  73. fprintf(fp,"call recvfrom, recvice data from %s port:%d,len:%dn",addr,port,size);
  74. PrintData(fp,(BYTE *)p,size);
  75. fclose(fp);
  76. }
  77. //日志文件
  78. }
  79. void SaveSendtoData(char *addr,int port, BYTE *p, int size)
  80. {
  81. FILE *fp=fopen(DataFile,"a+");
  82. if(fp!=NULL) {
  83. fprintf(fp,"call sendto, send data to %s port:%d,len:%dn",addr,port,size);
  84. PrintData(fp,(BYTE *)p,size);
  85. fclose(fp);
  86. }
  87. //日志文件
  88. }
  89. //必须输出与原WSOCK32.DLL库同样的函数。
  90. //************
  91. BOOL WINAPI DllMain (HANDLE hInst,
  92.  ULONG ul_reason_for_call,
  93.                      LPVOID lpReserved)
  94. {
  95. SaveRecord("begin");
  96. //装载原动态库
  97. if(i==NULL){
  98. i=LoadLibrary("c:\windows\system\wsock32.aaa");
  99. SaveRecord("reload old wsock32.dll");
  100. }
  101. else
  102. return 1;
  103. if(i!=NULL){
  104. //取得原同名函数地址
  105. a=GetProcAddress(i,"WSAStartup");
  106. WSAStartup1=(int (_stdcall *)(WORD,LPWSADATA))a;
  107. a=GetProcAddress(i,"WSACleanup");
  108. //取得原同名函数地址
  109. WSACleanup1=(int (_stdcall *)())a;
  110. a=GetProcAddress(i,"htons");
  111. htons1=(u_short (_stdcall *)(u_short))a;
  112. a=GetProcAddress(i,"socket");
  113. socket1=(SOCKET (_stdcall *)(int ,int,int))a;
  114. a=GetProcAddress(i,"WSAAsyncSelect");
  115. WSAAsyncSelect1=(int (_stdcall *)(SOCKET,HWND ,u_int,long ))a;
  116. a=GetProcAddress(i,"setsockopt");
  117. setsockopt1=(int (_stdcall *)(SOCKET ,int ,int ,const char * ,int ))a;
  118. a=GetProcAddress(i,"ioctlsocket");
  119. ioctlsocket1=(int (_stdcall *)(SOCKET ,long ,u_long FAR *))a;
  120. a=GetProcAddress(i,"WSAAsyncGetHostByName");
  121. WSAAsyncGetHostByName1=(HANDLE (_stdcall *)(HWND ,u_int ,const char FAR * , char FAR * ,int ))a;
  122. a=GetProcAddress(i,"closesocket");
  123. closesocket1=(int (_stdcall *)(SOCKET ))a;
  124. a=GetProcAddress(i,"select");
  125. select1=(int (_stdcall *)(int ,fd_set FAR *,fd_set FAR *,fd_set FAR *,const struct timeval FAR *))a;
  126. a=GetProcAddress(i,"NPLoadNameSpaces");
  127. NPLoadNameSpaces1=(int (_stdcall *)(int ,int ,int ))a;
  128. a=GetProcAddress(i,"connect");
  129. connect1=(int (_stdcall *)(SOCKET ,const struct sockaddr *,int ))a;
  130. a=GetProcAddress(i,"closesockinfo");
  131. closesockinfo1=(int (_stdcall *)(int))a;
  132. a=GetProcAddress(i,"WSAGetLastError");
  133. WSAGetLastError1=(int (_stdcall *)())a;
  134. a=GetProcAddress(i,"send");
  135. send1=(int (_stdcall *)(SOCKET ,const char * ,int ,int ))a;
  136. a=GetProcAddress(i,"recv");
  137. recv1=(int (_stdcall *)(SOCKET ,char FAR * ,int ,int ))a;
  138. a=GetProcAddress(i,"__WSAFDIsSet");
  139. __WSAFDIsSet1=(int (_stdcall *)(SOCKET,fd_set FAR *))a;
  140. a=GetProcAddress(i,"inet_addr");
  141. inet_addr1=(unsigned long (_stdcall *)(const char FAR * ))a;
  142. a=GetProcAddress(i,"WsControl");
  143. WsControl1=(int (_stdcall *)(int ,int ,int ,int ,int ,int ))a;
  144. a=GetProcAddress(i,"inet_ntoa");
  145. inet_ntoa1=(char *  (_stdcall *)(struct in_addr))a;
  146. a=GetProcAddress(i,"htonl");
  147. htonl1=(u_long  (_stdcall *)(u_long))a;
  148. a=GetProcAddress(i,"bind");
  149. bind1=(int (_stdcall *)(SOCKET ,const struct sockaddr *,int ))a;
  150. a=GetProcAddress(i,"getsockname");
  151. getsockname1=(int (_stdcall *)(SOCKET ,struct sockaddr *,int * ))a;
  152. a=GetProcAddress(i,"gethostbyname");
  153. gethostbyname1=(struct hostent * (_stdcall *)(const char FAR * ))a;
  154. a=GetProcAddress(i,"ntohs");
  155. ntohs1=(u_short (_stdcall *)(u_short))a;
  156. a=GetProcAddress(i,"getsockopt");
  157. getsockopt1=(int (_stdcall *)(SOCKET ,int ,int ,char * , int *))a;
  158. a=GetProcAddress(i,"gethostname");
  159. gethostname1=(int (_stdcall *)(char FAR *, int))a;
  160. a=GetProcAddress(i,"WSHEnumProtocols");
  161. WSHEnumProtocols1=(int (_stdcall *)(void))a;
  162. a=GetProcAddress(i,"getprotobyname");
  163. getprotobyname1=(getprotobyname0)a;
  164. a=GetProcAddress(i,"accept");
  165. accept1 =(accept0)a;
  166. a=GetProcAddress(i,"shutdown");
  167. shutdown1 =(shutdown0)a;
  168. a=GetProcAddress(i,"getservbyname");
  169. getservbyname1 =(getservbyname0)a;
  170. a=GetProcAddress(i,"getservbyport");
  171. getservbyport1 =(getservbyport0)a;
  172. a=GetProcAddress(i,"getprotobynumber");
  173. getprotobynumber1=(getprotobynumber0)a;
  174. a=GetProcAddress(i,"sendto");
  175. sendto1 =(sendto0)a;
  176. a=GetProcAddress(i,"recvfrom");
  177. recvfrom1 =(recvfrom0)a;
  178. a=GetProcAddress(i,"ntohl");
  179. ntohl1 =(ntohl0)a;
  180. a=GetProcAddress(i,"listen");
  181. listen1=(listen0)a;
  182. a=GetProcAddress(i,"getpeername");
  183. getpeername1 =(getpeername0)a;
  184. }else return 0;
  185. return 1;
  186. }
  187. int PASCAL FAR WSAStartup(WORD wVersionRequired, LPWSADATA lpWSAData)
  188. {
  189. SaveRecord("WSAStartup");
  190. //记日志,当然也可以是您的模块
  191. return WSAStartup1(wVersionRequired,lpWSAData);
  192. //执行真正的处理
  193. }
  194. int PASCAL FAR WSACleanup(void)
  195. {
  196. SaveRecord("WSACleanup");
  197. //记日志
  198. return WSACleanup1();
  199. //执行真正的处理
  200. }
  201. u_short PASCAL FAR htons (u_short hostshort)
  202. {
  203. SaveRecord("htons");
  204. return htons1(hostshort);
  205. //执行真正的处理
  206. }
  207. SOCKET PASCAL FAR socket (int af, int type, int protocol)
  208. {
  209. char disp[64];
  210. SOCKET rc;
  211. rc = socket1(af,type,protocol);
  212. wsprintf(disp,"socket(af:%d,type:%d,proto:%d) rc=%d",af,type,protocol,rc);
  213. SaveRecord(disp);
  214. return rc;
  215. }
  216. int PASCAL FAR WSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg,long lEvent)
  217. {
  218. char disp[128];
  219. int rc;
  220. rc = WSAAsyncSelect1(s,hWnd,wMsg,lEvent);
  221. wsprintf(disp,"WSAAsyncSelect(s=%d,hWnd,wMsg=%d,lEvent=%ld),rc=%d",s,wMsg,lEvent,rc);
  222. SaveRecord(disp);
  223. return rc;
  224. }
  225. int PASCAL FAR setsockopt(SOCKET s,int level,int optname,const char * optval,int optlen)
  226. {
  227. SaveRecord("setsockopt");
  228. return setsockopt1(s,level,optname,optval,optlen);
  229. //执行真正的处理
  230. }
  231. int PASCAL FAR ioctlsocket(SOCKET s, long cmd, u_long FAR *argp)
  232. {
  233. SaveRecord("ioctlsocket");
  234. return ioctlsocket1(s,cmd,argp);
  235. //执行真正的处理
  236. }
  237. HANDLE PASCAL FAR WSAAsyncGetHostByName(HWND hWnd, u_int wMsg,const char FAR * name, char FAR * buf,int buflen)
  238. {
  239. SaveRecord("WSAAsyncGetHostByName");
  240. return WSAAsyncGetHostByName1(hWnd,wMsg,name,buf,buflen);
  241. //执行真正的处理
  242. }
  243. int PASCAL FAR select(int nfds, fd_set FAR *readfds, fd_set FAR *writefds,fd_set FAR *exceptfds, const struct timeval FAR *timeout)
  244. {
  245. SaveRecord("select");
  246. return select1(nfds,readfds,writefds,exceptfds,timeout);
  247. //执行真正的处理
  248. }
  249. int PASCAL FAR closesocket(SOCKET s)
  250. {
  251. SaveRecord("closesocket");
  252. return closesocket1(s);
  253. //执行真正的处理
  254. }
  255. int PASCAL FAR NPLoadNameSpaces(int p,int q,int r)
  256. {
  257. SaveRecord("NPLoadNameSpaces");
  258. return NPLoadNameSpaces1(p,q,r);
  259. //执行真正的处理
  260. }
  261. int PASCAL FAR closesockinfo(int p)
  262. {
  263. SaveRecord("closesockinfo");
  264. return closesockinfo1(p);
  265. //执行真正的处理
  266. }
  267. int PASCAL FAR connect(SOCKET s,const struct sockaddr *name, int namelen)
  268. {
  269. int rc;
  270. sin =(sockaddr_in *)name;
  271. LPCSTR psz=inet_ntoa1(sin->sin_addr);
  272. wsprintf(msg,"connect,ip=%s:%d socket=%d",psz,ntohs1(sin->sin_port),s);
  273. SaveRecord(msg);
  274. rc = connect1(s,name,namelen);
  275. return rc;
  276. //执行真正的处理
  277. }
  278. int PASCAL FAR WSAGetLastError(void)
  279. {
  280. d=WSAGetLastError1();
  281. sprintf(aa,"WSAGetLastError %d",d);
  282. SaveRecord(aa);
  283. return d;
  284. //取得原同名函数地址
  285. //执行真正的处理
  286. }
  287. int PASCAL FAR send(SOCKET s,const char * buf,int len,int flags)
  288. {
  289. int rc;
  290. rc = send1(s,buf,len,flags);
  291. SaveSendData((int)s, (char *)buf, rc);
  292. return rc;
  293. }
  294. int PASCAL FAR recv(SOCKET s, char FAR * buf, int len, int flags)
  295. {
  296. int rc;
  297. SaveRecord("recv() ");
  298. rc = recv1(s,  buf,  len,  flags);
  299. if(rc<0)  return rc;
  300. //SaveRecvData((int)s, buf, rc);
  301. //
  302. //
  303. //   用上述SaveRecvData有时会死机 不知何故,
  304. //   解决者请告述我,谢谢!
  305. //
  306. return rc;
  307. }
  308. int PASCAL FAR __WSAFDIsSet(SOCKET p,fd_set FAR *q)
  309. {
  310. SaveRecord("__WSAFDIsSet");
  311. return __WSAFDIsSet1(p,q);
  312. }
  313. unsigned long PASCAL inet_addr(const char FAR * cp)
  314. {
  315. unsigned long rc;
  316. char disp[64];
  317. rc = inet_addr1(cp);
  318. wsprintf(disp,"inet_addr(%s)",cp);
  319. SaveRecord(disp);
  320. return rc;
  321. //执行真正的处理
  322. }
  323. int PASCAL WsControl(int p,int q,int r,int s,int t,int u)
  324. {
  325. SaveRecord("WsControl");
  326. return WsControl1(p,q,r,s,t,u);
  327. //取得原同名函数地址
  328. //执行真正的处理
  329. }
  330. char * PASCAL inet_ntoa (struct in_addr in)
  331. {
  332. SaveRecord("inet_ntoa");
  333. return inet_ntoa1(in);
  334. //取得原同名函数地址
  335. //执行真正的处理
  336. }
  337. u_long PASCAL FAR htonl(u_long hostlong)
  338. {
  339. SaveRecord("htonl");
  340. return htonl1(hostlong);
  341. //取得原同名函数地址
  342. //执行真正的处理
  343. }
  344. int PASCAL bind(SOCKET s, const struct sockaddr FAR *addr, int namelen)
  345. {
  346. SaveRecord("bind");
  347. return bind1(s,addr,namelen);
  348. //取得原同名函数地址
  349. //执行真正的处理
  350. }
  351. int PASCAL getsockname(SOCKET s, struct sockaddr *name,int * namelen)
  352. {
  353. int rc;
  354. char disp[512];
  355. sockaddr_in *sin;
  356. rc = getsockname1(s,name,namelen);
  357. sin =(sockaddr_in *)name;
  358. LPCSTR psz=inet_ntoa1(sin->sin_addr);
  359. wsprintf(disp,"getsockname(addr:%s,port:%d)",psz,ntohs1(sin->sin_port));
  360. SaveRecord(disp);
  361. return rc;
  362. }
  363. struct hostent * PASCAL FAR gethostbyname(const char FAR * name)
  364. {
  365. char disp[512];
  366. PHOSTENT hostinfo;
  367. if((hostinfo = gethostbyname1(name)) != NULL){
  368. LPCSTR ip = inet_ntoa1 (*(struct in_addr *)*hostinfo->h_addr_list);
  369. wsprintf(disp,"gethostbyname(hostname:%s,addr:%s)",name,ip);
  370. }
  371. else
  372. wsprintf(disp,"gethostbyname(hostname:%s)",name);
  373. SaveRecord(disp);
  374. return hostinfo;
  375. }
  376. u_short PASCAL ntohs(u_short netshort)
  377. {
  378. SaveRecord("ntohs");
  379. return ntohs1(netshort);
  380. //取得原同名函数地址
  381. //执行真正的处理
  382. }
  383. int PASCAL getsockopt(SOCKET s,int level,int optname,char * optval, int *optlen)
  384. {
  385. SaveRecord("getsockopt");
  386. return getsockopt1(s,level,optname,optval,optlen);
  387. //取得原同名函数地址
  388. //执行真正的处理
  389. }
  390. int PASCAL FAR gethostname (char FAR * name, int namelen)
  391. {
  392. int rc;
  393. char disp[256];
  394. rc = gethostname1 (name, namelen);
  395. if(rc==0){
  396. wsprintf(disp,"gethostname(hostname:%s)",name);
  397. SaveRecord(disp);
  398. }else
  399. SaveRecord("gethostname(return error)"); 
  400. return rc; 
  401. }
  402. int PASCAL FAR WSHEnumProtocols()
  403. {
  404. SaveRecord("WSHEnumProtocols");
  405. return WSHEnumProtocols1();
  406. }
  407. SOCKET PASCAL FAR accept (SOCKET s, struct sockaddr FAR *addr,int FAR *addrlen)
  408. {
  409. char disp[64];
  410. SOCKET rc;
  411. sockaddr_in *sin;
  412. rc = accept1(s, addr,addrlen);
  413. sin =(sockaddr_in *)addr;
  414. LPCSTR psz=inet_ntoa1(sin->sin_addr);
  415. wsprintf(disp,"accept,ip=%s:%d socket=%d",psz,ntohs1(sin->sin_port),rc);
  416. SaveRecord(disp);
  417. return rc;
  418. }
  419. int PASCAL FAR getpeername (SOCKET s, struct sockaddr FAR *name,int FAR * namelen)
  420. {
  421. SaveRecord("getpeername");
  422. return getpeername1(s,name,namelen);
  423. }
  424. int PASCAL FAR listen (SOCKET s, int backlog)
  425. {
  426. SaveRecord("listen");
  427. return listen1(s, backlog);
  428. }
  429. u_long PASCAL FAR ntohl (u_long netlong)
  430. {
  431. SaveRecord("ntohl");
  432. return ntohl1 (netlong);
  433. }
  434. int PASCAL FAR recvfrom (SOCKET s, char FAR * buf, int len, int flags,struct sockaddr FAR *from, int FAR * fromlen)
  435. {
  436. int rc;
  437. sockaddr_in *sin;
  438. rc = recvfrom1(s,  buf,  len,  flags, from, fromlen);
  439. sin =(sockaddr_in *)from;
  440. LPCSTR psz=inet_ntoa1(sin->sin_addr);
  441. SaveRecvfromData((char *)psz,ntohs1(sin->sin_port),buf, rc);
  442. return rc;
  443. }
  444. int PASCAL FAR sendto (SOCKET s, const char FAR * buf, int len, int flags,const struct sockaddr FAR *to, int tolen)
  445. {
  446. int rc;
  447. sockaddr_in *sin;
  448. rc = sendto1 (s, buf,  len, flags,to, tolen);
  449. sin =(sockaddr_in *)to;
  450. LPCSTR psz=inet_ntoa1(sin->sin_addr);
  451. SaveSendtoData((char *)psz,ntohs1(sin->sin_port),(unsigned char *)buf, rc);
  452. return rc;
  453. }
  454. int PASCAL FAR shutdown (SOCKET s, int how)
  455. {
  456. SaveRecord("shutdown");
  457. return shutdown1( s, how);
  458. }
  459. struct hostent FAR * PASCAL FAR gethostbyaddr(const char FAR * addr,int len, int type)
  460. {
  461. SaveRecord("gethostbyaddr");
  462. return gethostbyaddr1(addr, len, type);
  463. }
  464. struct protoent FAR * PASCAL FAR getprotobynumber(int proto)
  465. {
  466. SaveRecord("getprotobynumber");
  467. return getprotobynumber1(proto);
  468. }
  469. struct protoent FAR * PASCAL FAR getprotobyname(const char FAR * name)
  470. {
  471. SaveRecord("getprotobyname");
  472. return getprotobyname1(name);
  473. }
  474. struct servent FAR * PASCAL FAR getservbyport(int port, const char FAR * proto)
  475. {
  476. SaveRecord("getservbyport");
  477. return getservbyport1(port,  proto);
  478. }
  479. struct servent FAR * PASCAL FAR getservbyname(const char FAR * name,const char FAR * proto)
  480. {
  481. SaveRecord("getservbyname");
  482. return getservbyname1( name, proto);;
  483. }
  484. HANDLE PASCAL FAR WSAAsyncGetServByName(HWND hWnd, u_int wMsg,const char FAR * name,const char FAR * proto,char FAR * buf, int buflen)
  485. {
  486. SaveRecord("WSAAsyncGetServByName");
  487. return WSAAsyncGetServByName1( hWnd,  wMsg, name, proto, buf,  buflen);
  488. }
  489. HANDLE PASCAL FAR WSAAsyncGetServByPort(HWND hWnd, u_int wMsg, int port,const char FAR * proto, char FAR * buf,int buflen)
  490. {
  491. SaveRecord("WSAAsyncGetServByPort");
  492. return WSAAsyncGetServByPort1( hWnd,  wMsg,  port, proto, buf, buflen);
  493. }
  494. HANDLE PASCAL FAR WSAAsyncGetProtoByName(HWND hWnd, u_int wMsg,const char FAR * name, char FAR * buf,int buflen)
  495. {
  496. SaveRecord("WSAAsyncGetProtoByName");
  497. return WSAAsyncGetProtoByName1(hWnd, wMsg, name,  buf, buflen);
  498. }
  499. HANDLE PASCAL FAR WSAAsyncGetProtoByNumber(HWND hWnd, u_int wMsg,int number, char FAR * buf,int buflen)
  500. {
  501. SaveRecord("WSAAsyncGetProtoByNumber");
  502. return WSAAsyncGetProtoByNumber1( hWnd,  wMsg, number,  buf, buflen);
  503. }
  504. HANDLE PASCAL FAR WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg,const char FAR * addr, int len, int type,char FAR * buf, int buflen)
  505. {
  506. SaveRecord("WSAAsyncGetHostByAddr");
  507. return WSAAsyncGetHostByAddr1( hWnd,  wMsg, addr, len, type,  buf, buflen);
  508. }
  509. int PASCAL FAR WSACancelAsyncRequest(HANDLE hAsyncTaskHandle)
  510. {
  511. SaveRecord("WSACancelAsyncRequest");
  512. return WSACancelAsyncRequest1(hAsyncTaskHandle);
  513. }
  514. FARPROC PASCAL FAR WSASetBlockingHook(FARPROC lpBlockFunc)
  515. {
  516. SaveRecord("WSASetBlockingHook");
  517. return WSASetBlockingHook1(lpBlockFunc);
  518. }
  519. int PASCAL FAR WSAUnhookBlockingHook(void)
  520. {
  521. SaveRecord("WSAUnhookBlockingHook");
  522. return WSAUnhookBlockingHook1();
  523. }
  524. void PASCAL FAR WSASetLastError(int iError)
  525. {
  526. char disp[64];
  527. wsprintf(disp,"WSASetLastError(%d)",iError);
  528. SaveRecord(disp);
  529. WSASetLastError1(iError);
  530. }
  531. int PASCAL FAR WSACancelBlockingCall(void)
  532. {
  533. SaveRecord("WSACancelBlockingCall");
  534. return WSACancelBlockingCall1();
  535. }
  536. BOOL PASCAL FAR WSAIsBlocking(void)
  537. {
  538. SaveRecord("WSAIsBlocking");
  539. return WSAIsBlocking1();
  540. }
  541. int PASCAL FAR WSARecvEx (SOCKET s, char FAR * buf, int len, int FAR *flags)
  542. {
  543. int rc;
  544. char disp[512];
  545. char tmp[400];
  546. rc = WSARecvEx1 ( s, buf, len, flags);
  547. strncpy(tmp,buf,400);
  548. wsprintf(disp,"WSARecvEx(len=%d,buf:%s)",len,tmp);
  549. SaveRecord(disp);
  550. return rc;
  551. }
  552. BOOL PASCAL FAR TransmitFile (IN SOCKET hSocket,IN HANDLE hFile,IN DWORD nNumberOfBytesToWrite,IN DWORD nNumberOfBytesPerSend,IN LPOVERLAPPED lpOverlapped,IN void *lpTransmitBuffers,IN DWORD dwReserved)
  553. {
  554. SaveRecord("TransmitFile");
  555. return TransmitFile1 ( hSocket, hFile, nNumberOfBytesToWrite, nNumberOfBytesPerSend, lpOverlapped,lpTransmitBuffers, dwReserved);
  556. }
  557. int PASCAL FAR Arecv ()
  558. {
  559. SaveRecord("Arecv");
  560. return Arecv1();
  561. }
  562. int PASCAL FAR Asend ()
  563. {
  564. SaveRecord("Asend");
  565. return Asend1 ();
  566. }
  567. int PASCAL FAR inet_network ()
  568. {
  569. SaveRecord("inet_network");
  570. return inet_network1 ();
  571. }
  572. int PASCAL FAR getnetbyname ()
  573. {
  574. SaveRecord("getnetbyname");
  575. return getnetbyname1 ();
  576. }
  577. int PASCAL FAR rcmd  ()
  578. {
  579. SaveRecord("rcmd ");
  580. return rcmd1  ();
  581. }
  582. int PASCAL FAR rexec ()
  583. {
  584. SaveRecord("rexec");
  585. return rexec1 ();
  586. }
  587. int PASCAL FAR rresvport ()
  588. {
  589. SaveRecord("rresvport");
  590. return rresvport1 ();
  591. }
  592. int PASCAL FAR sethostname ()
  593. {
  594. SaveRecord("sethostname");
  595. return sethostname1 ();
  596. }
  597. int PASCAL FAR dn_expand ()
  598. {
  599. SaveRecord("dn_expand");
  600. return dn_expand1 ();
  601. }
  602. int PASCAL FAR s_perror  ()
  603. {
  604. SaveRecord("s_perror ");
  605. return s_perror1  ();
  606. }
  607. int PASCAL FAR GetAddressByNameA ()
  608. {
  609. SaveRecord(" GetAddressByNameA ");
  610. return GetAddressByNameA1 ();
  611. }
  612. int PASCAL FAR GetAddressByNameW ()
  613. {
  614. SaveRecord("GetAddressByNameW");
  615. return GetAddressByNameW1 ();
  616. }
  617. int PASCAL FAR EnumProtocolsA ()
  618. {
  619. SaveRecord("EnumProtocolsA ");
  620. return EnumProtocolsA1 ();
  621. }
  622. int PASCAL FAR EnumProtocolsW ()
  623. {
  624. SaveRecord("EnumProtocolsW");
  625. return EnumProtocolsW1 ();
  626. }
  627. int PASCAL FAR GetTypeByNameA ()
  628. {
  629. SaveRecord("GetTypeByNameA");
  630. return GetTypeByNameA1 ();
  631. }
  632. int PASCAL FAR GetTypeByNameW ()
  633. {
  634. SaveRecord("GetTypeByNameW ");
  635. return GetTypeByNameW1();
  636. }
  637. int PASCAL FAR GetNameByTypeA ()
  638. {SaveRecord("GetNameByTypeA ");
  639. return GetNameByTypeA1 ();
  640. }
  641. int PASCAL FAR GetNameByTypeW ()
  642. {
  643. SaveRecord("GetNameByTypeW");
  644. return GetNameByTypeW1 ();
  645. }
  646. int PASCAL FAR SetServiceA ()
  647. {
  648. SaveRecord("SetServiceA ");
  649. return SetServiceA1 ();
  650. }
  651. int PASCAL FAR SetServiceW ()
  652. {
  653. SaveRecord("SetServiceW");
  654. return SetServiceW1 ();
  655. }
  656. int PASCAL FAR GetServiceA ()
  657. {
  658. SaveRecord("GetServiceA");
  659. return GetServiceA1 ();
  660. }
  661. int PASCAL FAR GetServiceW ()
  662. {
  663. SaveRecord("GetServiceW ");
  664. return GetServiceW1 ();
  665. }
  666. //BOOL PASCAL FAR AcceptEx (IN SOCKET sListenSocket,IN SOCKET sAcceptSocket,IN PVOID lpOutputBuffer,IN DWORD dwReceiveDataLength,IN DWORD dwLocalAddressLength,IN DWORD dwRemoteAddressLength,OUT LPDWORD lpdwBytesReceived,IN LPOVERLAPPED lpOverlapped){SaveRecord("1");return 0;}
  667. //VOID PASCAL FAR GetAcceptExSockaddrs (IN PVOID lpOutputBuffer,IN DWORD dwReceiveDataLength,IN DWORD dwLocalAddressLength,IN DWORD dwRemoteAddressLength,OUT struct sockaddr **LocalSockaddr,OUT LPINT LocalSockaddrLength,OUT struct sockaddr **RemoteSockaddr,OUT LPINT RemoteSockaddrLength){SaveRecord("1");return 0;}