Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

417 lines
6.0 KiB

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
iwinsock.hxx
Abstract:
Contains prototypes for indirected sockets functions
Author:
Richard L Firth (rfirth) 12-Apr-1995
Revision History:
12-Apr-1995 rfirth
Created
08-May-1996 arthurbi
Moved into SOCKET_FUNC_ARRAY in order to supports Socks.
--*/
#if !defined(_IWINSOCK_)
#define _WINSOCK_
#if defined(__cplusplus)
extern "C" {
#endif
//
// includes
//
#include <winsock2.h>
#include <mswsock.h>
#include <ws2tcpip.h>
#include <basetyps.h>
#include <nspapi.h>
#include <svcguid.h>
//
// prototypes
//
VOID
IwinsockInitialize(
VOID
);
VOID
IwinsockTerminate(
VOID
);
DWORD
LoadWinsock(
VOID
);
VOID
UnloadWinsock(
VOID
);
DWORD
SafeCloseSocket(
IN SOCKET Socket
);
//
// sockets functions
//
extern
SOCKET
(PASCAL FAR * _I_accept)(
SOCKET s,
struct sockaddr FAR *addr,
int FAR *addrlen
);
extern
int
(PASCAL FAR * _I_bind)(
SOCKET s,
const struct sockaddr FAR *addr,
int namelen
);
extern
int
(PASCAL FAR * _I_closesocket)(
SOCKET s
);
extern
int
(PASCAL FAR * _I_connect)(
SOCKET s,
const struct sockaddr FAR *name,
int namelen
);
extern
int
(PASCAL FAR * _I_gethostname)(
char FAR * name,
int namelen
);
extern
LPHOSTENT
(PASCAL FAR * _I_gethostbyaddr)(
const char FAR * addr,
int len,
int type
);
extern
LPHOSTENT
(PASCAL FAR * _I_gethostbyname)(
const char FAR * lpHostName
);
extern
int
(PASCAL FAR * _I_getsockname)(
SOCKET s,
struct sockaddr FAR *name,
int FAR * namelen
);
extern
int
(PASCAL FAR * _I_getpeername)(
SOCKET s,
struct sockaddr FAR *name,
int FAR * namelen
);
extern
int
(PASCAL FAR * _I_getsockopt)(
SOCKET s,
int level,
int optname,
char FAR * optval,
int FAR *optlen
);
extern
u_long
(PASCAL FAR * _I_htonl)(
u_long hostlong
);
extern
u_short
(PASCAL FAR * _I_htons)(
u_short hostshort
);
extern
unsigned long
(PASCAL FAR * _I_inet_addr)(
const char FAR * cp
);
extern
char FAR *
(PASCAL FAR * _I_inet_ntoa)(
struct in_addr in
);
extern
int
(PASCAL FAR * _I_ioctlsocket)(
SOCKET s,
long cmd,
u_long FAR *argp
);
extern
int
(PASCAL FAR * _I_listen)(
SOCKET s,
int backlog
);
extern
u_short
(PASCAL FAR * _I_ntohs)(
u_short netshort
);
extern
int
(PASCAL FAR * _I_recv)(
SOCKET s,
char FAR * buf,
int len,
int flags
);
extern
int
(PASCAL FAR * _I_recvfrom)(
SOCKET s,
char FAR * buf,
int len,
int flags,
struct sockaddr FAR *from,
int FAR * fromlen
);
extern
int
(PASCAL FAR * _I_select)(
int nfds,
fd_set FAR *readfds,
fd_set FAR *writefds,
fd_set FAR *exceptfds,
const struct timeval FAR *timeout
);
extern
int
(PASCAL FAR * _I_send)(
SOCKET s,
const char FAR * buf,
int len,
int flags
);
extern
int
(PASCAL FAR * _I_sendto)(
SOCKET s,
const char FAR * buf,
int len,
int flags,
const struct sockaddr FAR *to,
int tolen
);
extern
int
(PASCAL FAR * _I_setsockopt)(
SOCKET s,
int level,
int optname,
const char FAR * optval,
int optlen
);
extern
int
(PASCAL FAR * _I_shutdown)(
SOCKET s,
int how
);
extern
SOCKET
(PASCAL FAR * _I_socket)(
int af,
int type,
int protocol
);
//
// WSA functions
//
extern
int
(PASCAL FAR * _I_WSAStartup)(
WORD wVersionRequired,
LPWSADATA lpWSAData
);
extern
int
(PASCAL FAR * _I_WSACleanup)(
void
);
extern
int
(PASCAL FAR * _I_WSAGetLastError)(
void
);
extern
void
(PASCAL FAR * _I_WSASetLastError)(
int iError
);
extern
int
(PASCAL FAR * _I___WSAFDIsSet)(
SOCKET,
fd_set FAR *
);
//
// address family independent APIs
//
extern
int
(PASCAL FAR * _I_getaddrinfo)(
IN const char FAR * nodename,
IN const char FAR * servname,
IN const struct addrinfo FAR * hints,
OUT struct addrinfo FAR * FAR * res
);
extern
void
(PASCAL FAR * _I_freeaddrinfo)(
IN struct addrinfo *ai
);
extern
int
(PASCAL FAR * _I_getnameinfo)(
IN const struct sockaddr FAR * sa,
IN socklen_t salen,
OUT char FAR * host,
IN size_t hostlen,
OUT char FAR * serv,
IN size_t servlen,
IN int flags
);
//
// winsock2 name resolution API.
//
extern
int
(PASCAL FAR * _I_WSALookupServiceBeginW)(
IN LPWSAQUERYSETW lpqsRestrictions,
IN DWORD dwControlFlags,
OUT LPHANDLE lphLookup
);
extern
int
(PASCAL FAR * _I_WSALookupServiceNextW)(
IN HANDLE hLookup,
IN DWORD dwControlFlags,
IN OUT LPDWORD lpdwBufferLength,
OUT LPWSAQUERYSETW lpqsResults
);
extern
int
(PASCAL FAR * _I_WSALookupServiceEnd)(
IN HANDLE hLookup
);
extern
int
(PASCAL FAR * _I_WSANSPIoctl)(
IN HANDLE hLookup,
IN DWORD dwControlCode,
IN LPVOID lpvInBuffer,
IN DWORD cbInBuffer,
OUT LPVOID lpvOutBuffer,
IN DWORD cbOutBuffer,
OUT LPDWORD lpcbBytesReturned,
IN LPWSACOMPLETION lpCompletion
);
//
// macros
//
#ifndef unix
#if defined(FD_ISSET)
#undef FD_ISSET
#endif
#define FD_ISSET(fd, set) _I___WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set))
#endif /* unix */
#if INET_DEBUG
VOID
IWinsockCheckSockets(
VOID
);
#define CHECK_SOCKETS() IWinsockCheckSockets()
#else
#define CHECK_SOCKETS() /* NOTHING */
#endif
#if defined(__cplusplus)
}
#endif
#endif // _IWINSOCK_