home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 April / PCWorld_2008-04_cd.bin / temacd / devc++ / devcpp-4.9.9.2_setup.exe / mswsock.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  3KB  |  114 lines

  1. /*
  2.  * mswsock.h
  3.  * MS-specific extensions to Windows Sockets, exported from mswsock.dll.
  4.  * These functions are N/A on Windows9x.
  5.  *
  6.  * This file is part of a free library for the Win32 API.
  7.  * This library is distributed in the hope that it will be useful,
  8.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  9.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10.  */
  11.          
  12. #ifndef _MSWSOCK_H
  13. #define _MSWSOCK_H
  14. #if __GNUC__ >=3
  15. #pragma GCC system_header
  16. #endif
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20.  
  21. #define SO_CONNDATA    0x7000
  22. #define SO_CONNOPT    0x7001
  23. #define SO_DISCDATA    0x7002
  24. #define SO_DISCOPT    0x7003
  25. #define SO_CONNDATALEN    0x7004
  26. #define SO_CONNOPTLEN    0x7005
  27. #define SO_DISCDATALEN    0x7006
  28. #define SO_DISCOPTLEN    0x7007
  29. #define SO_OPENTYPE    0x7008
  30. #define SO_SYNCHRONOUS_ALERT    0x10
  31. #define SO_SYNCHRONOUS_NONALERT    0x20
  32. #define SO_MAXDG    0x7009
  33. #define SO_MAXPATHDG    0x700A
  34. #define SO_UPDATE_ACCEPT_CONTEXT    0x700B
  35. #define SO_CONNECT_TIME    0x700C
  36. #define TCP_BSDURGENT    0x7000
  37.  
  38. #define TF_DISCONNECT   1
  39. #define TF_REUSE_SOCKET 2
  40. #define TF_WRITE_BEHIND 4
  41. #define TF_USE_DEFAULT_WORKER   0
  42. #define TF_USE_SYSTEM_THREAD    16
  43. #define TF_USE_KERNEL_APC   32
  44.  
  45. typedef struct _TRANSMIT_FILE_BUFFERS {
  46.     PVOID Head;
  47.     DWORD HeadLength;
  48.     PVOID Tail;
  49.     DWORD TailLength;
  50. } TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
  51.  
  52. int PASCAL WSARecvEx(SOCKET,char*,int,int*);
  53. BOOL PASCAL TransmitFile(SOCKET,HANDLE,DWORD,DWORD,LPOVERLAPPED,LPTRANSMIT_FILE_BUFFERS,DWORD);
  54. BOOL PASCAL AcceptEx(SOCKET,SOCKET,PVOID,DWORD,DWORD,DWORD,LPDWORD,LPOVERLAPPED);
  55. VOID PASCAL GetAcceptExSockaddrs(PVOID,DWORD,DWORD,DWORD,struct sockaddr**, LPINT, struct sockaddr**, LPINT);
  56.  
  57. #ifdef _WINSOCK2_H /* These require the winsock2 interface.  */
  58.  
  59. #define TP_ELEMENT_FILE        1
  60. #define TP_ELEMENT_MEMORY    2
  61. #define TP_ELEMENT_EOP        4
  62.  
  63. typedef struct _TRANSMIT_PACKETS_ELEMENT { 
  64.     ULONG dwElFlags;
  65.     ULONG cLength;
  66.     _ANONYMOUS_UNION
  67.     union {
  68.         struct {
  69.             LARGE_INTEGER    nFileOffset;
  70.             HANDLE        hFile;
  71.         };
  72.         PVOID    pBuffer;
  73.     };
  74. } TRANSMIT_PACKETS_ELEMENT; 
  75.  
  76. typedef struct _WSAMSG {
  77.     LPSOCKADDR    name;
  78.     INT        namelen;
  79.     LPWSABUF    lpBuffers;
  80.     DWORD        dwBufferCount;
  81.     WSABUF        Control;
  82.     DWORD        dwFlags;
  83. } WSAMSG, *PWSAMSG, *LPWSAMSG;
  84.  
  85.  
  86. /* According to MSDN docs, the WSAMSG.Control buffer starts with a
  87.    cmsghdr header of the following form.  See also RFC 2292. */
  88.  
  89. typedef struct wsacmsghdr {
  90.     UINT    cmsg_len;
  91.     INT    cmsg_level;
  92.      INT    cmsg_type;
  93.     /* followed by UCHAR cmsg_data[]; */
  94. } WSACMSGHDR;
  95.  
  96. /* TODO: Standard Posix.1g macros as per RFC 2292, with WSA_uglification. */
  97. #if 0
  98. #define WSA_CMSG_FIRSTHDR(mhdr)
  99. #define WSA_CMSG_NXTHDR(mhdr, cmsg)
  100. #define WSA_CMSG_SPACE(length)
  101. #define WSA_CMSG_LEN(length)
  102. #endif
  103.  
  104. BOOL PASCAL DisconnectEx(SOCKET,LPOVERLAPPED,DWORD,DWORD);
  105. int PASCAL WSARecvMsg(SOCKET,LPWSAMSG,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
  106.  
  107. #endif /* _WINSOCK2_H */
  108.  
  109. #ifdef __cplusplus
  110. }
  111. #endif
  112. #endif  /*  _MSWSOCK_H */
  113.  
  114.