206 lines
4.1 KiB
C
206 lines
4.1 KiB
C
/*++
|
|
|
|
Copyright (c) 1998, Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
socket.h
|
|
|
|
Abstract:
|
|
|
|
This module contains declarations for socket-management.
|
|
The routines declared here operate asynchronously on sockets
|
|
associated with an I/O completion port. They are also integrated
|
|
with the component-reference object, which may optionally be used
|
|
by callers to control the number of outstanding entries into a component's
|
|
address-space. (See 'COMPREF.H'.)
|
|
|
|
Author:
|
|
|
|
Abolade Gbadegesin (aboladeg) 2-Mar-1998
|
|
|
|
Revision History:
|
|
|
|
Abolade Gbadegesin (aboladeg) 23-May-1999
|
|
|
|
Added support for stream sockets.
|
|
|
|
Jonathan Burstein (jonburs) 12-April-2001
|
|
|
|
Added support for raw datagram sockets.
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _NATHLP_SOCKET_H_
|
|
#define _NATHLP_SOCKET_H_
|
|
|
|
#define INET_NTOA(x) inet_ntoa(*(struct in_addr*)&(x))
|
|
|
|
ULONG
|
|
NhAcceptStreamSocket(
|
|
PCOMPONENT_REFERENCE Component,
|
|
SOCKET ListeningSocket,
|
|
SOCKET AcceptedSocket OPTIONAL,
|
|
PNH_BUFFER Bufferp OPTIONAL,
|
|
PNH_COMPLETION_ROUTINE AcceptCompletionRoutine,
|
|
PVOID Context,
|
|
PVOID Context2
|
|
);
|
|
|
|
ULONG
|
|
NhConnectStreamSocket(
|
|
PCOMPONENT_REFERENCE Component,
|
|
SOCKET ConnectingSocket,
|
|
ULONG Address,
|
|
USHORT Port,
|
|
PNH_BUFFER Bufferp OPTIONAL,
|
|
PNH_COMPLETION_ROUTINE ConnectCompletionRoutine,
|
|
PNH_COMPLETION_ROUTINE CloseNotificationRoutine OPTIONAL,
|
|
PVOID Context,
|
|
PVOID Context2
|
|
);
|
|
|
|
ULONG
|
|
NhCreateDatagramSocket(
|
|
ULONG Address,
|
|
USHORT Port,
|
|
OUT SOCKET* Socketp
|
|
);
|
|
|
|
ULONG
|
|
NhCreateRawDatagramSocket(
|
|
OUT SOCKET* Socketp
|
|
);
|
|
|
|
ULONG
|
|
NhCreateStreamSocket(
|
|
ULONG Address OPTIONAL, // may be INADDR_NONE
|
|
USHORT Port OPTIONAL,
|
|
OUT SOCKET* Socketp
|
|
);
|
|
|
|
#define NhDeleteDatagramSocket(s) NhDeleteSocket(s)
|
|
#define NhDeleteStreamSocket(s) NhDeleteSocket(s)
|
|
|
|
VOID
|
|
NhDeleteSocket(
|
|
SOCKET Socket
|
|
);
|
|
|
|
//
|
|
// BOOLEAN
|
|
// NhIsFatalSocketError(
|
|
// ULONG Error
|
|
// );
|
|
//
|
|
// Determines whether a request may be reissued on a socket,
|
|
// given the error-code from the previous issuance of the request.
|
|
// This macro is arranged to branch on the most common error-codes first.
|
|
//
|
|
|
|
#define \
|
|
NhIsFatalSocketError( \
|
|
_Error \
|
|
) \
|
|
((_Error) != ERROR_OPERATION_ABORTED && \
|
|
((_Error) == WSAEDISCON || \
|
|
(_Error) == WSAECONNRESET || \
|
|
(_Error) == WSAETIMEDOUT || \
|
|
(_Error) == WSAENETDOWN || \
|
|
(_Error) == WSAENOTSOCK || \
|
|
(_Error) == WSAESHUTDOWN || \
|
|
(_Error) == WSAECONNABORTED))
|
|
|
|
ULONG
|
|
NhNotifyOnCloseStreamSocket(
|
|
PCOMPONENT_REFERENCE Component,
|
|
SOCKET Socket,
|
|
PNH_BUFFER Bufferp OPTIONAL,
|
|
PNH_COMPLETION_ROUTINE CloseNotificationRoutine,
|
|
PVOID Context,
|
|
PVOID Context2
|
|
);
|
|
|
|
VOID
|
|
NhQueryAcceptEndpoints(
|
|
PUCHAR AcceptBuffer,
|
|
PULONG LocalAddress OPTIONAL,
|
|
PUSHORT LocalPort OPTIONAL,
|
|
PULONG RemoteAddress OPTIONAL,
|
|
PUSHORT RemotePort OPTIONAL
|
|
);
|
|
|
|
ULONG
|
|
NhQueryAddressSocket(
|
|
SOCKET Socket
|
|
);
|
|
|
|
ULONG
|
|
NhQueryLocalEndpointSocket(
|
|
SOCKET Socket,
|
|
PULONG Address OPTIONAL,
|
|
PUSHORT Port OPTIONAL
|
|
);
|
|
|
|
USHORT
|
|
NhQueryPortSocket(
|
|
SOCKET Socket
|
|
);
|
|
|
|
ULONG
|
|
NhQueryRemoteEndpointSocket(
|
|
SOCKET Socket,
|
|
PULONG Address OPTIONAL,
|
|
PUSHORT Port OPTIONAL
|
|
);
|
|
|
|
ULONG
|
|
NhReadDatagramSocket(
|
|
PCOMPONENT_REFERENCE Component,
|
|
SOCKET Socket,
|
|
PNH_BUFFER Bufferp OPTIONAL,
|
|
PNH_COMPLETION_ROUTINE CompletionRoutine,
|
|
PVOID Context,
|
|
PVOID Context2
|
|
);
|
|
|
|
ULONG
|
|
NhReadStreamSocket(
|
|
PCOMPONENT_REFERENCE Component,
|
|
SOCKET Socket,
|
|
PNH_BUFFER Bufferp OPTIONAL,
|
|
ULONG Length,
|
|
ULONG Offset,
|
|
PNH_COMPLETION_ROUTINE CompletionRoutine,
|
|
PVOID Context,
|
|
PVOID Context2
|
|
);
|
|
|
|
ULONG
|
|
NhWriteDatagramSocket(
|
|
PCOMPONENT_REFERENCE Component,
|
|
SOCKET Socket,
|
|
ULONG Address,
|
|
USHORT Port,
|
|
PNH_BUFFER Bufferp,
|
|
ULONG Length,
|
|
PNH_COMPLETION_ROUTINE CompletionRoutine,
|
|
PVOID Context,
|
|
PVOID Context2
|
|
);
|
|
|
|
ULONG
|
|
NhWriteStreamSocket(
|
|
PCOMPONENT_REFERENCE Component,
|
|
SOCKET Socket,
|
|
PNH_BUFFER Bufferp,
|
|
ULONG Length,
|
|
ULONG Offset,
|
|
PNH_COMPLETION_ROUTINE CompletionRoutine,
|
|
PVOID Context,
|
|
PVOID Context2
|
|
);
|
|
|
|
#endif // _NATHLP_SOCKET_H_
|