home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / mswsock.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  4KB  |  182 lines

  1. /*++
  2.  
  3. Copyright (c) 1989-1997  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     mswsock.h
  8.  
  9. Abstract:
  10.  
  11.     This module contains the Microsoft-specific extensions to the Windows
  12.     Sockets API.
  13.  
  14. Author:
  15.  
  16.     Keith Moore (keithmo) 06-Oct-1995 (Separated from WINSOCK.H).
  17.  
  18. Revision History:
  19.  
  20. --*/
  21.  
  22. #ifndef _MSWSOCK_
  23. #define _MSWSOCK_
  24.  
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28.  
  29. /*
  30.  * Options for connect and disconnect data and options.  Used only by
  31.  * non-TCP/IP transports such as DECNet, OSI TP4, etc.
  32.  */
  33. #define SO_CONNDATA                 0x7000
  34. #define SO_CONNOPT                  0x7001
  35. #define SO_DISCDATA                 0x7002
  36. #define SO_DISCOPT                  0x7003
  37. #define SO_CONNDATALEN              0x7004
  38. #define SO_CONNOPTLEN               0x7005
  39. #define SO_DISCDATALEN              0x7006
  40. #define SO_DISCOPTLEN               0x7007
  41.  
  42. /*
  43.  * Option for opening sockets for synchronous access.
  44.  */
  45. #define SO_OPENTYPE                 0x7008
  46.  
  47. #define SO_SYNCHRONOUS_ALERT        0x10
  48. #define SO_SYNCHRONOUS_NONALERT     0x20
  49.  
  50. /*
  51.  * Other NT-specific options.
  52.  */
  53. #define SO_MAXDG                    0x7009
  54. #define SO_MAXPATHDG                0x700A
  55. #define SO_UPDATE_ACCEPT_CONTEXT    0x700B
  56. #define SO_CONNECT_TIME             0x700C
  57.  
  58. /*
  59.  * TCP options.
  60.  */
  61. #define TCP_BSDURGENT               0x7000
  62.  
  63. /*
  64.  * Microsoft extended APIs.
  65.  */
  66. int
  67. PASCAL FAR
  68. WSARecvEx (
  69.     SOCKET s,
  70.     char FAR *buf,
  71.     int len,
  72.     int FAR *flags
  73.     );
  74.  
  75. typedef struct _TRANSMIT_FILE_BUFFERS {
  76.     LPVOID Head;
  77.     DWORD HeadLength;
  78.     LPVOID Tail;
  79.     DWORD TailLength;
  80. } TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, FAR *LPTRANSMIT_FILE_BUFFERS;
  81.  
  82. #define TF_DISCONNECT       0x01
  83. #define TF_REUSE_SOCKET     0x02
  84. #define TF_WRITE_BEHIND     0x04
  85.  
  86. BOOL
  87. PASCAL FAR
  88. TransmitFile (
  89.     IN SOCKET hSocket,
  90.     IN HANDLE hFile,
  91.     IN DWORD nNumberOfBytesToWrite,
  92.     IN DWORD nNumberOfBytesPerSend,
  93.     IN LPOVERLAPPED lpOverlapped,
  94.     IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
  95.     IN DWORD dwReserved
  96.     );
  97.  
  98. BOOL
  99. PASCAL FAR
  100. AcceptEx (
  101.     IN SOCKET sListenSocket,
  102.     IN SOCKET sAcceptSocket,
  103.     IN PVOID lpOutputBuffer,
  104.     IN DWORD dwReceiveDataLength,
  105.     IN DWORD dwLocalAddressLength,
  106.     IN DWORD dwRemoteAddressLength,
  107.     OUT LPDWORD lpdwBytesReceived,
  108.     IN LPOVERLAPPED lpOverlapped
  109.     );
  110.  
  111. VOID
  112. PASCAL FAR
  113. GetAcceptExSockaddrs (
  114.     IN PVOID lpOutputBuffer,
  115.     IN DWORD dwReceiveDataLength,
  116.     IN DWORD dwLocalAddressLength,
  117.     IN DWORD dwRemoteAddressLength,
  118.     OUT struct sockaddr **LocalSockaddr,
  119.     OUT LPINT LocalSockaddrLength,
  120.     OUT struct sockaddr **RemoteSockaddr,
  121.     OUT LPINT RemoteSockaddrLength
  122.     );
  123.  
  124. /*
  125.  * "QueryInterface" versions of the above APIs.
  126.  */
  127.  
  128. typedef
  129. BOOL
  130. (PASCAL FAR * LPFN_TRANSMITFILE)(
  131.     IN SOCKET hSocket,
  132.     IN HANDLE hFile,
  133.     IN DWORD nNumberOfBytesToWrite,
  134.     IN DWORD nNumberOfBytesPerSend,
  135.     IN LPOVERLAPPED lpOverlapped,
  136.     IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
  137.     IN DWORD dwReserved
  138.     );
  139.  
  140. #define WSAID_TRANSMITFILE \
  141.         {0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
  142.  
  143. typedef
  144. BOOL
  145. (PASCAL FAR * LPFN_ACCEPTEX)(
  146.     IN SOCKET sListenSocket,
  147.     IN SOCKET sAcceptSocket,
  148.     IN PVOID lpOutputBuffer,
  149.     IN DWORD dwReceiveDataLength,
  150.     IN DWORD dwLocalAddressLength,
  151.     IN DWORD dwRemoteAddressLength,
  152.     OUT LPDWORD lpdwBytesReceived,
  153.     IN LPOVERLAPPED lpOverlapped
  154.     );
  155.  
  156. #define WSAID_ACCEPTEX \
  157.         {0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
  158.  
  159. typedef
  160. VOID
  161. (PASCAL FAR * LPFN_GETACCEPTEXSOCKADDRS)(
  162.     IN PVOID lpOutputBuffer,
  163.     IN DWORD dwReceiveDataLength,
  164.     IN DWORD dwLocalAddressLength,
  165.     IN DWORD dwRemoteAddressLength,
  166.     OUT struct sockaddr **LocalSockaddr,
  167.     OUT LPINT LocalSockaddrLength,
  168.     OUT struct sockaddr **RemoteSockaddr,
  169.     OUT LPINT RemoteSockaddrLength
  170.     );
  171.  
  172. #define WSAID_GETACCEPTEXSOCKADDRS \
  173.         {0xb5367df2,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}}
  174.  
  175.  
  176. #ifdef __cplusplus
  177. }
  178. #endif
  179.  
  180. #endif  /* _MSWSOCK_ */
  181.  
  182.