|
|
1.1 root 1: /*++
2:
3: Copyright (c) 1992 Microsoft Corporation
4:
5: Module Name:
6:
7: WsaHelp.h
8:
9: Abstract:
10:
11: This header file contains prototypes required for Windows Sockets
12: Helper DLLs. The helper DLLs allow the Windows Sockets DLL to be
13: transport independent by suppling the necessary option get/set and
14: address conversion routines for an individual transport or transport
15: family.
16:
17: Author:
18:
19: David Treadwell (davidtr) 15-Jul-1992
20:
21: Revision History:
22:
23: --*/
24:
25: //
26: // Notification event definitions. A helper DLL returns a mask of the
27: // events for which it wishes to be notified, and the Windows Sockets
28: // DLL calls the helper DLL in WSHNotify for each requested event.
29: //
30:
31: #define WSH_NOTIFY_BIND 0x01
32: #define WSH_NOTIFY_LISTEN 0x02
33: #define WSH_NOTIFY_CONNECT 0x04
34: #define WSH_NOTIFY_ACCEPT 0x08
35: #define WSH_NOTIFY_SHUTDOWN_RECEIVE 0x10
36: #define WSH_NOTIFY_SHUTDOWN_SEND 0x20
37: #define WSH_NOTIFY_SHUTDOWN_ALL 0x40
38: #define WSH_NOTIFY_CLOSE 0x80
39:
40: //
41: // Definitions for various internal socket options. These are used
42: // by the Windows Sockets DLL to communicate information to the helper
43: // DLL via get and set socket information calls.
44: //
45:
46: #define SOL_INTERNAL 0xFFFE
47: #define SO_CONTEXT 1
48:
49: //
50: // Open, Notify, and Socket Option routine prototypes.
51: //
52:
53: typedef
54: INT
55: (* WINAPI PWSH_OPEN_SOCKET) (
56: IN PINT AddressFamily,
57: IN PINT SocketType,
58: IN PINT Protocol,
59: OUT PUNICODE_STRING TransportDeviceName,
60: OUT PVOID *HelperDllSocketContext,
61: OUT PDWORD NotificationEvents
62: );
63:
64: INT
65: WINAPI
66: WSHOpenSocket (
67: IN OUT PINT AddressFamily,
68: IN OUT PINT SocketType,
69: IN OUT PINT Protocol,
70: OUT PUNICODE_STRING TransportDeviceName,
71: OUT PVOID *HelperDllSocketContext,
72: OUT PDWORD NotificationEvents
73: );
74:
75: typedef
76: INT
77: (* WINAPI PWSH_NOTIFY) (
78: IN PVOID HelperDllSocketContext,
79: IN SOCKET SocketHandle,
80: IN HANDLE TdiAddressObjectHandle,
81: IN HANDLE TdiConnectionObjectHandle,
82: IN DWORD NotifyEvent
83: );
84:
85: INT
86: WINAPI
87: WSHNotify (
88: IN PVOID HelperDllSocketContext,
89: IN SOCKET SocketHandle,
90: IN HANDLE TdiAddressObjectHandle,
91: IN HANDLE TdiConnectionObjectHandle,
92: IN DWORD NotifyEvent
93: );
94:
95: typedef
96: INT
97: (* WINAPI PWSH_GET_SOCKET_INFORMATION) (
98: IN PVOID HelperDllSocketContext,
99: IN SOCKET SocketHandle,
100: IN HANDLE TdiAddressObjectHandle,
101: IN HANDLE TdiConnectionObjectHandle,
102: IN INT Level,
103: IN INT OptionName,
104: OUT PCHAR OptionValue,
105: OUT PINT OptionLength
106: );
107:
108: INT
109: WINAPI
110: WSHGetSocketInformation (
111: IN PVOID HelperDllSocketContext,
112: IN SOCKET SocketHandle,
113: IN HANDLE TdiAddressObjectHandle,
114: IN HANDLE TdiConnectionObjectHandle,
115: IN INT Level,
116: IN INT OptionName,
117: OUT PCHAR OptionValue,
118: OUT PINT OptionLength
119: );
120:
121: typedef
122: INT
123: (* WINAPI PWSH_SET_SOCKET_INFORMATION) (
124: IN PVOID HelperDllSocketContext,
125: IN SOCKET SocketHandle,
126: IN HANDLE TdiAddressObjectHandle,
127: IN HANDLE TdiConnectionObjectHandle,
128: IN INT Level,
129: IN INT OptionName,
130: IN PCHAR OptionValue,
131: IN INT OptionLength
132: );
133:
134: INT
135: WINAPI
136: WSHSetSocketInformation (
137: IN PVOID HelperDllSocketContext,
138: IN SOCKET SocketHandle,
139: IN HANDLE TdiAddressObjectHandle,
140: IN HANDLE TdiConnectionObjectHandle,
141: IN INT Level,
142: IN INT OptionName,
143: IN PCHAR OptionValue,
144: IN INT OptionLength
145: );
146:
147: //
148: // Structure and routine for determining the address family/socket
149: // type/protocol triples supported by an individual Windows Sockets
150: // Helper DLL. The Rows field of WINSOCK_MAPPING determines the
151: // number of entries in the Mapping[] array; the Columns field is
152: // always 3 for Windows/NT product 1.
153: //
154:
155: typedef struct _WINSOCK_MAPPING {
156: DWORD Rows;
157: DWORD Columns;
158: struct {
159: DWORD AddressFamily;
160: DWORD SocketType;
161: DWORD Protocol;
162: } Mapping[1];
163: } WINSOCK_MAPPING, *PWINSOCK_MAPPING;
164:
165: typedef
166: DWORD
167: (* WINAPI PWSH_GET_WINSOCK_MAPPING) (
168: OUT PWINSOCK_MAPPING Mapping,
169: IN DWORD MappingLength
170: );
171:
172: DWORD
173: WINAPI
174: WSHGetWinsockMapping (
175: OUT PWINSOCK_MAPPING Mapping,
176: IN DWORD MappingLength
177: );
178:
179: //
180: // Address manipulation routine.
181: //
182:
183: typedef enum _SOCKADDR_ADDRESS_INFO {
184: SockaddrAddressInfoNormal,
185: SockaddrAddressInfoWildcard,
186: SockaddrAddressInfoBroadcast,
187: SockaddrAddressInfoLoopback
188: } SOCKADDR_ADDRESS_INFO, *PSOCKADDR_ADDRESS_INFO;
189:
190: typedef enum _SOCKADDR_ENDPOINT_INFO {
191: SockaddrEndpointInfoNormal,
192: SockaddrEndpointInfoWildcard,
193: SockaddrEndpointInfoReserved
194: } SOCKADDR_ENDPOINT_INFO, *PSOCKADDR_ENDPOINT_INFO;
195:
196: typedef struct _SOCKADDR_INFO {
197: SOCKADDR_ADDRESS_INFO AddressInfo;
198: SOCKADDR_ENDPOINT_INFO EndpointInfo;
199: } SOCKADDR_INFO, *PSOCKADDR_INFO;
200:
201: typedef
202: INT
203: (* WINAPI PWSH_GET_SOCKADDR_TYPE) (
204: IN PSOCKADDR Sockaddr,
205: IN DWORD SockaddrLength,
206: OUT PSOCKADDR_INFO SockaddrInfo
207: );
208:
209: INT
210: WINAPI
211: WSHGetSockaddrType (
212: IN PSOCKADDR Sockaddr,
213: IN DWORD SockaddrLength,
214: OUT PSOCKADDR_INFO SockaddrInfo
215: );
216:
217: typedef
218: INT
219: (* WINAPI PWSH_GET_WILDCARD_SOCKADDR) (
220: IN PVOID HelperDllSocketContext,
221: OUT PSOCKADDR Sockaddr,
222: OUT PINT SockaddrLength
223: );
224:
225: INT
226: WINAPI
227: WSHGetWildcardSockaddr (
228: IN PVOID HelperDllSocketContext,
229: OUT PSOCKADDR Sockaddr,
230: OUT PINT SockaddrLength
231: );
232:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.