[DDK]
[reactos.git] / include / psdk / ws2spi.h
1 /*
2 * ws2spi.h
3 *
4 * Winsock 2 Service Provider interface.
5 *
6 *
7 * THIS SOFTWARE IS NOT COPYRIGHTED
8 *
9 * This source code is offered for use in the public domain. You may
10 * use, modify or distribute it freely.
11 *
12 * This code is distributed in the hope that it will be useful but
13 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
14 * DISCLAIMED. This includes but is not limited to warranties of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16 *
17 */
18 #pragma once
19
20 #define _WS2SPI_H
21
22 #ifndef _WINSOCK2API_
23 #include <winsock2.h>
24 #endif
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 #if !defined(_WIN64)
31 #include <pshpack4.h>
32 #endif
33
34 #define WSPDESCRIPTION_LEN 255
35
36 #define WSS_OPERATION_IN_PROGRESS 0x00000103L
37
38 #define WSPAPI WSAAPI
39
40 typedef struct _WSATHREADID {
41 HANDLE ThreadHandle;
42 DWORD_PTR Reserved;
43 } WSATHREADID, FAR *LPWSATHREADID;
44
45 typedef struct WSPData {
46 WORD wVersion;
47 WORD wHighVersion;
48 WCHAR szDescription[WSPDESCRIPTION_LEN+1];
49 } WSPDATA, FAR *LPWSPDATA;
50
51 typedef BOOL
52 (CALLBACK FAR *LPBLOCKINGCALLBACK)(
53 DWORD_PTR dwContext);
54
55 typedef SOCKET
56 (WSPAPI *LPWSPACCEPT)(
57 IN SOCKET s,
58 OUT struct sockaddr FAR *addr OPTIONAL,
59 IN OUT LPINT addrlen OPTIONAL,
60 IN LPCONDITIONPROC lpfnCondition OPTIONAL,
61 IN DWORD_PTR dwCallbackData OPTIONAL,
62 OUT LPINT lpErrno);
63
64 typedef VOID
65 (CALLBACK FAR *LPWSAUSERAPC)(
66 DWORD_PTR dwContext);
67
68 typedef INT
69 (WSPAPI *LPWSPADDRESSTOSTRING)(
70 IN LPSOCKADDR lpsaAddress,
71 IN DWORD dwAddressLength,
72 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
73 OUT LPWSTR lpszAddressString,
74 IN OUT LPDWORD lpdwAddressStringLength,
75 OUT LPINT lpErrno);
76
77 typedef int
78 (WSPAPI *LPWSPASYNCSELECT)(
79 IN SOCKET s,
80 IN HWND hWnd,
81 IN unsigned int wMsg,
82 IN long lEvent,
83 OUT LPINT lpErrno);
84
85 typedef int
86 (WSPAPI *LPWSPBIND)(
87 IN SOCKET s,
88 IN const struct sockaddr FAR *name,
89 IN int namelen,
90 OUT LPINT lpErrno);
91
92 typedef int
93 (WSPAPI *LPWSPCANCELBLOCKINGCALL)(
94 OUT LPINT lpErrno);
95
96 typedef int
97 (WSPAPI *LPWSPCLEANUP)(
98 OUT LPINT lpErrno);
99
100 typedef int
101 (WSPAPI *LPWSPCLOSESOCKET)(
102 IN SOCKET s,
103 OUT LPINT lpErrno);
104
105 typedef int
106 (WSPAPI *LPWSPCONNECT)(
107 IN SOCKET s,
108 IN const struct sockaddr FAR *name,
109 IN int namelen,
110 IN LPWSABUF lpCallerData OPTIONAL,
111 OUT LPWSABUF lpCalleeData OPTIONAL,
112 IN LPQOS lpSQOS OPTIONAL,
113 IN LPQOS lpGQOS OPTIONAL,
114 OUT LPINT lpErrno);
115
116 typedef int
117 (WSPAPI *LPWSPDUPLICATESOCKET)(
118 IN SOCKET s,
119 IN DWORD dwProcessId,
120 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo,
121 OUT LPINT lpErrno);
122
123 typedef int
124 (WSPAPI *LPWSPENUMNETWORKEVENTS)(
125 IN SOCKET s,
126 IN WSAEVENT hEventObject,
127 OUT LPWSANETWORKEVENTS lpNetworkEvents,
128 OUT LPINT lpErrno);
129
130 typedef int
131 (WSPAPI *LPWSPEVENTSELECT)(
132 IN SOCKET s,
133 IN WSAEVENT hEventObject,
134 IN long lNetworkEvents,
135 OUT LPINT lpErrno);
136
137 typedef BOOL
138 (WSPAPI *LPWSPGETOVERLAPPEDRESULT)(
139 IN SOCKET s,
140 IN LPWSAOVERLAPPED lpOverlapped,
141 OUT LPDWORD lpcbTransfer,
142 IN BOOL fWait,
143 OUT LPDWORD lpdwFlags,
144 OUT LPINT lpErrno);
145
146 typedef int
147 (WSPAPI *LPWSPGETPEERNAME)(
148 IN SOCKET s,
149 OUT struct sockaddr FAR *name,
150 IN OUT LPINT namelen,
151 OUT LPINT lpErrno);
152
153 typedef int
154 (WSPAPI *LPWSPGETSOCKNAME)(
155 IN SOCKET s,
156 OUT struct sockaddr FAR *name,
157 IN OUT LPINT namelen,
158 OUT LPINT lpErrno);
159
160 typedef int
161 (WSPAPI *LPWSPGETSOCKOPT)(
162 IN SOCKET s,
163 IN int level,
164 IN int optname,
165 OUT char FAR *optval,
166 IN OUT LPINT optlen,
167 OUT LPINT lpErrno);
168
169 typedef BOOL
170 (WSPAPI *LPWSPGETQOSBYNAME)(
171 IN SOCKET s,
172 IN LPWSABUF lpQOSName,
173 OUT LPQOS lpQOS,
174 OUT LPINT lpErrno);
175
176 typedef int
177 (WSPAPI *LPWSPIOCTL)(
178 IN SOCKET s,
179 IN DWORD dwIoControlCode,
180 IN LPVOID lpvInBuffer OPTIONAL,
181 IN DWORD cbInBuffer,
182 OUT LPVOID lpvOutBuffer OPTIONAL,
183 IN DWORD cbOutBuffer,
184 OUT LPDWORD lpcbBytesReturned,
185 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
186 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
187 IN LPWSATHREADID lpThreadId OPTIONAL,
188 OUT LPINT lpErrno);
189
190 typedef SOCKET
191 (WSPAPI *LPWSPJOINLEAF)(
192 IN SOCKET s,
193 IN const struct sockaddr FAR *name,
194 IN int namelen,
195 IN LPWSABUF lpCallerData OPTIONAL,
196 OUT LPWSABUF lpCalleeData OPTIONAL,
197 IN LPQOS lpSQOS OPTIONAL,
198 IN LPQOS lpGQOS OPTIONAL,
199 IN DWORD dwFlags,
200 OUT LPINT lpErrno);
201
202 typedef int
203 (WSPAPI *LPWSPLISTEN)(
204 IN SOCKET s,
205 IN int backlog,
206 OUT LPINT lpErrno);
207
208 typedef int
209 (WSPAPI *LPWSPRECV)(
210 IN SOCKET s,
211 IN LPWSABUF lpBuffers,
212 IN DWORD dwBufferCount,
213 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
214 IN OUT LPDWORD lpFlags,
215 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
216 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
217 IN LPWSATHREADID lpThreadId OPTIONAL,
218 IN LPINT lpErrno);
219
220 typedef int
221 (WSPAPI *LPWSPRECVDISCONNECT)(
222 IN SOCKET s,
223 IN LPWSABUF lpInboundDisconnectData OPTIONAL,
224 OUT LPINT lpErrno);
225
226 typedef int
227 (WSPAPI *LPWSPRECVFROM)(
228 IN SOCKET s,
229 IN LPWSABUF lpBuffers,
230 IN DWORD dwBufferCount,
231 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
232 IN OUT LPDWORD lpFlags,
233 OUT struct sockaddr FAR *lpFrom OPTIONAL,
234 IN OUT LPINT lpFromlen OPTIONAL,
235 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
236 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
237 IN LPWSATHREADID lpThreadId OPTIONAL,
238 OUT LPINT lpErrno);
239
240 typedef int
241 (WSPAPI *LPWSPSELECT)(
242 IN int nfds,
243 IN OUT fd_set FAR *readfds OPTIONAL,
244 IN OUT fd_set FAR *writefds OPTIONAL,
245 IN OUT fd_set FAR *exceptfds OPTIONAL,
246 IN const struct timeval FAR *timeout OPTIONAL,
247 OUT LPINT lpErrno);
248
249 typedef int
250 (WSPAPI *LPWSPSEND)(
251 IN SOCKET s,
252 IN LPWSABUF lpBuffers,
253 IN DWORD dwBufferCount,
254 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
255 IN DWORD dwFlags,
256 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
257 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
258 IN LPWSATHREADID lpThreadId OPTIONAL,
259 OUT LPINT lpErrno);
260
261 typedef int
262 (WSPAPI *LPWSPSENDDISCONNECT)(
263 IN SOCKET s,
264 IN LPWSABUF lpOutboundDisconnectData OPTIONAL,
265 OUT LPINT lpErrno);
266
267 typedef int
268 (WSPAPI *LPWSPSENDTO)(
269 IN SOCKET s,
270 IN LPWSABUF lpBuffers,
271 IN DWORD dwBufferCount,
272 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
273 IN DWORD dwFlags,
274 IN const struct sockaddr FAR *lpTo OPTIONAL,
275 IN int iTolen,
276 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
277 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
278 IN LPWSATHREADID lpThreadId OPTIONAL,
279 OUT LPINT lpErrno);
280
281 typedef int
282 (WSPAPI *LPWSPSETSOCKOPT)(
283 IN SOCKET s,
284 IN int level,
285 IN int optname,
286 IN const char FAR *optval OPTIONAL,
287 IN int optlen,
288 OUT LPINT lpErrno);
289
290 typedef int
291 (WSPAPI *LPWSPSHUTDOWN)(
292 IN SOCKET s,
293 IN int how,
294 OUT LPINT lpErrno);
295
296 typedef SOCKET
297 (WSPAPI *LPWSPSOCKET)(
298 IN int af,
299 IN int type,
300 IN int protocol,
301 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
302 IN GROUP g,
303 IN DWORD dwFlags,
304 OUT LPINT lpErrno);
305
306 typedef INT
307 (WSPAPI *LPWSPSTRINGTOADDRESS)(
308 IN LPWSTR AddressString,
309 IN INT AddressFamily,
310 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
311 OUT LPSOCKADDR lpAddress,
312 IN OUT LPINT lpAddressLength,
313 OUT LPINT lpErrno);
314
315 typedef BOOL
316 (WSPAPI *LPWPUCLOSEEVENT)(
317 IN WSAEVENT hEvent,
318 OUT LPINT lpErrno);
319
320 typedef int
321 (WSPAPI *LPWPUCLOSESOCKETHANDLE)(
322 IN SOCKET s,
323 OUT LPINT lpErrno);
324
325 typedef WSAEVENT
326 (WSPAPI *LPWPUCREATEEVENT)(
327 OUT LPINT lpErrno);
328
329 typedef SOCKET
330 (WSPAPI *LPWPUCREATESOCKETHANDLE)(
331 IN DWORD dwCatalogEntryId,
332 IN DWORD_PTR dwContext,
333 OUT LPINT lpErrno);
334
335 typedef int
336 (WSPAPI *LPWPUFDISSET)(
337 IN SOCKET s,
338 IN fd_set FAR *fdset);
339
340 typedef int
341 (WSPAPI *LPWPUGETPROVIDERPATH)(
342 IN LPGUID lpProviderId,
343 OUT WCHAR FAR *lpszProviderDllPath,
344 IN OUT LPINT lpProviderDllPathLen,
345 OUT LPINT lpErrno);
346
347 typedef SOCKET
348 (WSPAPI *LPWPUMODIFYIFSHANDLE)(
349 IN DWORD dwCatalogEntryId,
350 IN SOCKET ProposedHandle,
351 OUT LPINT lpErrno);
352
353 typedef BOOL
354 (WSPAPI *LPWPUPOSTMESSAGE)(
355 IN HWND hWnd,
356 IN UINT Msg,
357 IN WPARAM wParam,
358 IN LPARAM lParam);
359
360 typedef int
361 (WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(
362 IN DWORD dwCatalogEntryId,
363 OUT LPBLOCKINGCALLBACK FAR *lplpfnCallback,
364 OUT PDWORD_PTR lpdwContext,
365 OUT LPINT lpErrno);
366
367 typedef int
368 (WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(
369 IN SOCKET s,
370 OUT PDWORD_PTR lpContext,
371 OUT LPINT lpErrno);
372
373 typedef int
374 (WSPAPI *LPWPUQUEUEAPC)(
375 IN LPWSATHREADID lpThreadId,
376 IN LPWSAUSERAPC lpfnUserApc,
377 IN DWORD_PTR dwContext,
378 OUT LPINT lpErrno);
379
380 typedef BOOL
381 (WSPAPI *LPWPURESETEVENT)(
382 IN WSAEVENT hEvent,
383 OUT LPINT lpErrno);
384
385 typedef BOOL
386 (WSPAPI *LPWPUSETEVENT)(
387 IN WSAEVENT hEvent,
388 OUT LPINT lpErrno);
389
390 typedef int
391 (WSPAPI *LPWPUOPENCURRENTTHREAD)(
392 OUT LPWSATHREADID lpThreadId,
393 OUT LPINT lpErrno);
394
395 typedef int
396 (WSPAPI *LPWPUCLOSETHREAD)(
397 IN LPWSATHREADID lpThreadId,
398 OUT LPINT lpErrno);
399
400 typedef int
401 (WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)(
402 IN SOCKET s,
403 IN OUT LPWSAOVERLAPPED lpOverlapped,
404 IN DWORD dwError,
405 IN DWORD cbTransferred,
406 OUT LPINT lpErrno);
407
408 typedef int
409 (WSPAPI *LPWSCENUMPROTOCOLS)(
410 IN LPINT lpiProtocols OPTIONAL,
411 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
412 IN OUT LPDWORD lpdwBufferLength,
413 OUT LPINT lpErrno);
414
415 typedef int
416 (WSPAPI *LPWSCDEINSTALLPROVIDER)(
417 IN LPGUID lpProviderId,
418 OUT LPINT lpErrno);
419
420 typedef int
421 (WSPAPI *LPWSCINSTALLPROVIDER)(
422 IN LPGUID lpProviderId,
423 IN const WCHAR FAR *lpszProviderDllPath,
424 IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
425 IN DWORD dwNumberOfEntries,
426 OUT LPINT lpErrno);
427
428 typedef int
429 (WSPAPI *LPWSCGETPROVIDERPATH)(
430 IN LPGUID lpProviderId,
431 OUT WCHAR FAR *lpszProviderDllPath,
432 IN OUT LPINT lpProviderDllPathLen,
433 OUT LPINT lpErrno);
434
435 typedef INT
436 (WSPAPI *LPWSCINSTALLNAMESPACE)(
437 IN LPWSTR lpszIdentifier,
438 IN LPWSTR lpszPathName,
439 IN DWORD dwNameSpace,
440 IN DWORD dwVersion,
441 IN LPGUID lpProviderId);
442
443 typedef INT
444 (WSPAPI *LPWSCUNINSTALLNAMESPACE)(
445 IN LPGUID lpProviderId);
446
447 typedef INT
448 (WSPAPI *LPWSCENABLENSPROVIDER)(
449 IN LPGUID lpProviderId,
450 IN BOOL fEnable);
451
452 /* Service provider procedure table */
453 typedef struct _WSPPROC_TABLE {
454 LPWSPACCEPT lpWSPAccept;
455 LPWSPADDRESSTOSTRING lpWSPAddressToString;
456 LPWSPASYNCSELECT lpWSPAsyncSelect;
457 LPWSPBIND lpWSPBind;
458 LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
459 LPWSPCLEANUP lpWSPCleanup;
460 LPWSPCLOSESOCKET lpWSPCloseSocket;
461 LPWSPCONNECT lpWSPConnect;
462 LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
463 LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
464 LPWSPEVENTSELECT lpWSPEventSelect;
465 LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
466 LPWSPGETPEERNAME lpWSPGetPeerName;
467 LPWSPGETSOCKNAME lpWSPGetSockName;
468 LPWSPGETSOCKOPT lpWSPGetSockOpt;
469 LPWSPGETQOSBYNAME lpWSPGetQOSByName;
470 LPWSPIOCTL lpWSPIoctl;
471 LPWSPJOINLEAF lpWSPJoinLeaf;
472 LPWSPLISTEN lpWSPListen;
473 LPWSPRECV lpWSPRecv;
474 LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
475 LPWSPRECVFROM lpWSPRecvFrom;
476 LPWSPSELECT lpWSPSelect;
477 LPWSPSEND lpWSPSend;
478 LPWSPSENDDISCONNECT lpWSPSendDisconnect;
479 LPWSPSENDTO lpWSPSendTo;
480 LPWSPSETSOCKOPT lpWSPSetSockOpt;
481 LPWSPSHUTDOWN lpWSPShutdown;
482 LPWSPSOCKET lpWSPSocket;
483 LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
484 } WSPPROC_TABLE, FAR* LPWSPPROC_TABLE;
485
486 typedef INT
487 (WSAAPI *LPNSPCLEANUP)(
488 IN LPGUID lpProviderId);
489
490 typedef INT
491 (WSAAPI *LPNSPLOOKUPSERVICEBEGIN)(
492 IN LPGUID lpProviderId,
493 IN LPWSAQUERYSETW lpqsRestrictions,
494 IN LPWSASERVICECLASSINFOW lpServiceClassInfo,
495 IN DWORD dwControlFlags,
496 OUT LPHANDLE lphLookup);
497
498 typedef INT
499 (WSAAPI *LPNSPLOOKUPSERVICENEXT)(
500 IN HANDLE hLookup,
501 IN DWORD dwControlFlags,
502 IN OUT LPDWORD lpdwBufferLength,
503 OUT LPWSAQUERYSETW lpqsResults);
504
505 #if(_WIN32_WINNT >= 0x0501)
506 typedef INT
507 (WSAAPI *LPNSPIOCTL)(
508 IN HANDLE hLookup,
509 IN DWORD dwControlCode,
510 IN LPVOID lpvInBuffer,
511 IN DWORD cbInBuffer,
512 OUT LPVOID lpvOutBuffer,
513 IN DWORD cbOutBuffer,
514 OUT LPDWORD lpcbBytesReturned,
515 IN LPWSACOMPLETION lpCompletion OPTIONAL,
516 IN LPWSATHREADID lpThreadId);
517 #endif
518
519 typedef INT
520 (WSAAPI *LPNSPLOOKUPSERVICEEND)(
521 IN HANDLE hLookup);
522
523 typedef INT
524 (WSAAPI *LPNSPSETSERVICE)(
525 IN LPGUID lpProviderId,
526 IN LPWSASERVICECLASSINFOW lpServiceClassInfo,
527 IN LPWSAQUERYSETW lpqsRegInfo,
528 IN WSAESETSERVICEOP essOperation,
529 IN DWORD dwControlFlags);
530
531 typedef INT
532 (WSAAPI *LPNSPINSTALLSERVICECLASS)(
533 IN LPGUID lpProviderId,
534 IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
535
536 typedef INT
537 (WSAAPI *LPNSPREMOVESERVICECLASS)(
538 IN LPGUID lpProviderId,
539 IN LPGUID lpServiceClassId);
540
541 typedef INT
542 (WSAAPI *LPNSPGETSERVICECLASSINFO)(
543 IN LPGUID lpProviderId,
544 IN LPDWORD lpdwBufSize,
545 IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
546
547 typedef INT
548 (WSAAPI *LPNSPV2STARTUP)(
549 IN LPGUID lpProviderId,
550 OUT LPVOID *ppvClientSessionArg);
551
552 typedef INT
553 (WSAAPI *LPNSPV2CLEANUP)(
554 IN LPGUID lpProviderId,
555 IN LPVOID pvClientSessionArg);
556
557 typedef INT
558 (WSAAPI *LPNSPV2LOOKUPSERVICEBEGIN)(
559 IN LPGUID lpProviderId,
560 IN LPWSAQUERYSET2W lpqsRestrictions,
561 IN DWORD dwControlFlags,
562 IN LPVOID lpvClientSessionArg,
563 OUT LPHANDLE lphLookup);
564
565 typedef VOID
566 (WSAAPI *LPNSPV2LOOKUPSERVICENEXTEX)(
567 IN HANDLE hAsyncCall,
568 IN HANDLE hLookup,
569 IN DWORD dwControlFlags,
570 IN LPDWORD lpdwBufferLength,
571 OUT LPWSAQUERYSET2W lpqsResults);
572
573 typedef INT
574 (WSAAPI *LPNSPV2LOOKUPSERVICEEND)(
575 IN HANDLE hLookup);
576
577 typedef VOID
578 (WSAAPI *LPNSPV2SETSERVICEEX)(
579 IN HANDLE hAsyncCall,
580 IN LPGUID lpProviderId,
581 IN LPWSAQUERYSET2W lpqsRegInfo,
582 IN WSAESETSERVICEOP essOperation,
583 IN DWORD dwControlFlags,
584 IN LPVOID lpvClientSessionArg);
585
586 typedef VOID
587 (WSAAPI *LPNSPV2CLIENTSESSIONRUNDOWN)(
588 IN LPGUID lpProviderId,
589 IN LPVOID pvClientSessionArg);
590
591 /* Service Provider upcall table */
592 typedef struct _WSPUPCALLTABLE {
593 LPWPUCLOSEEVENT lpWPUCloseEvent;
594 LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
595 LPWPUCREATEEVENT lpWPUCreateEvent;
596 LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
597 LPWPUFDISSET lpWPUFDIsSet;
598 LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
599 LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
600 LPWPUPOSTMESSAGE lpWPUPostMessage;
601 LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
602 LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
603 LPWPUQUEUEAPC lpWPUQueueApc;
604 LPWPURESETEVENT lpWPUResetEvent;
605 LPWPUSETEVENT lpWPUSetEvent;
606 LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
607 LPWPUCLOSETHREAD lpWPUCloseThread;
608 } WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
609
610 typedef int
611 (WSPAPI *LPWSPSTARTUP)(
612 IN WORD wVersionRequested,
613 IN LPWSPDATA lpWSPData,
614 IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
615 IN WSPUPCALLTABLE UpcallTable,
616 OUT LPWSPPROC_TABLE lpProcTable);
617
618 #if (_WIN32_WINNT >= 0x0600)
619
620 #define LSP_SYSTEM 0x80000000
621 #define LSP_INSPECTOR 0x00000001
622 #define LSP_REDIRECTOR 0x00000002
623 #define LSP_PROXY 0x00000004
624 #define LSP_FIREWALL 0x00000008
625 #define LSP_INBOUND_MODIFY 0x00000010
626 #define LSP_OUTBOUND_MODIFY 0x00000020
627 #define LSP_CRYPTO_COMPRESS 0x00000040
628 #define LSP_LOCAL_CACHE 0x00000080
629
630 typedef enum _WSC_PROVIDER_INFO_TYPE {
631 ProviderInfoLspCategories,
632 ProviderInfoAudit
633 } WSC_PROVIDER_INFO_TYPE ;
634
635 typedef struct _WSC_PROVIDER_AUDIT_INFO {
636 DWORD RecordSize;
637 PVOID Reserved;
638 } WSC_PROVIDER_AUDIT_INFO;
639
640 #endif /* (_WIN32_WINNT >= 0x0600) */
641
642 typedef struct _NSP_ROUTINE {
643 DWORD cbSize;
644 DWORD dwMajorVersion;
645 DWORD dwMinorVersion;
646 LPNSPCLEANUP NSPCleanup;
647 LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
648 LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
649 LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
650 LPNSPSETSERVICE NSPSetService;
651 LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
652 LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
653 LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
654 LPNSPIOCTL NSPIoctl;
655 } NSP_ROUTINE, *PNSP_ROUTINE, FAR* LPNSP_ROUTINE;
656
657 typedef INT
658 (WSAAPI *LPNSPSTARTUP)(
659 IN LPGUID lpProviderId,
660 IN OUT LPNSP_ROUTINE lpnspRoutines);
661
662 typedef struct _NSPV2_ROUTINE {
663 DWORD cbSize;
664 DWORD dwMajorVersion;
665 DWORD dwMinorVersion;
666 LPNSPV2STARTUP NSPv2Startup;
667 LPNSPV2CLEANUP NSPv2Cleanup;
668 LPNSPV2LOOKUPSERVICEBEGIN NSPv2LookupServiceBegin;
669 LPNSPV2LOOKUPSERVICENEXTEX NSPv2LookupServiceNextEx;
670 LPNSPV2LOOKUPSERVICEEND NSPv2LookupServiceEnd;
671 LPNSPV2SETSERVICEEX NSPv2SetServiceEx;
672 LPNSPV2CLIENTSESSIONRUNDOWN NSPv2ClientSessionRundown;
673 } NSPV2_ROUTINE, *PNSPV2_ROUTINE, *LPNSPV2_ROUTINE;
674 typedef const NSPV2_ROUTINE *PCNSPV2_ROUTINE, *LPCNSPV2_ROUTINE;
675
676 int
677 WSPAPI
678 WSPStartup(
679 IN WORD wVersionRequested,
680 IN LPWSPDATA lpWSPData,
681 IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
682 IN WSPUPCALLTABLE UpcallTable,
683 OUT LPWSPPROC_TABLE lpProcTable);
684
685 int
686 WSPAPI
687 WSCEnumProtocols(
688 IN LPINT lpiProtocols OPTIONAL,
689 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
690 IN OUT LPDWORD lpdwBufferLength,
691 OUT LPINT lpErrno);
692
693 #if (_WIN32_WINNT >= 0x0501)
694
695 int
696 WSPAPI
697 WPUOpenCurrentThread(
698 OUT LPWSATHREADID lpThreadId,
699 OUT LPINT lpErrno);
700
701 int
702 WSPAPI
703 WPUCloseThread(
704 IN LPWSATHREADID lpThreadId,
705 OUT LPINT lpErrno);
706
707 #define WSCEnumNameSpaceProviders WSAEnumNameSpaceProvidersW
708 #define LPFN_WSCENUMNAMESPACEPROVIDERS LPFN_WSAENUMNAMESPACEPROVIDERSW
709
710 int
711 WSPAPI
712 WSCUpdateProvider(
713 IN LPGUID lpProviderId,
714 IN const WCHAR FAR *lpszProviderDllPath,
715 IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
716 IN DWORD dwNumberOfEntries,
717 OUT LPINT lpErrno);
718
719 typedef int
720 (WSPAPI *LPWSCUPDATEPROVIDER)(
721 IN LPGUID lpProviderId,
722 IN const WCHAR FAR *lpszProviderDllPath,
723 IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
724 IN DWORD dwNumberOfEntries,
725 OUT LPINT lpErrno);
726
727 #if defined(_WIN64)
728
729 int
730 WSPAPI
731 WSCEnumProtocols32(
732 IN LPINT lpiProtocols OPTIONAL,
733 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer,
734 IN OUT LPDWORD lpdwBufferLength,
735 OUT LPINT lpErrno);
736
737 int
738 WSPAPI
739 WSCDeinstallProvider32(
740 IN LPGUID lpProviderId,
741 OUT LPINT lpErrno);
742
743 int
744 WSPAPI
745 WSCInstallProvider64_32(
746 IN LPGUID lpProviderId,
747 IN const WCHAR FAR *lpszProviderDllPath,
748 IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
749 IN DWORD dwNumberOfEntries,
750 OUT LPINT lpErrno);
751
752 int
753 WSPAPI
754 WSCGetProviderPath32(
755 IN LPGUID lpProviderId,
756 OUT WCHAR FAR *lpszProviderDllPath,
757 IN OUT LPINT lpProviderDllPathLen,
758 OUT LPINT lpErrno);
759
760 int
761 WSPAPI
762 WSCUpdateProvider32(
763 IN LPGUID lpProviderId,
764 IN const WCHAR FAR *lpszProviderDllPath,
765 IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
766 IN DWORD dwNumberOfEntries,
767 OUT LPINT lpErrno);
768
769 INT
770 WSAAPI
771 WSCEnumNameSpaceProviders32(
772 IN OUT LPDWORD lpdwBufferLength,
773 OUT LPWSANAMESPACE_INFOW lpnspBuffer);
774
775 INT
776 WSPAPI
777 WSCInstallNameSpace32(
778 IN LPWSTR lpszIdentifier,
779 IN LPWSTR lpszPathName,
780 IN DWORD dwNameSpace,
781 IN DWORD dwVersion,
782 IN LPGUID lpProviderId);
783
784 INT
785 WSPAPI
786 WSCUnInstallNameSpace32(
787 IN LPGUID lpProviderId);
788
789 INT
790 WSPAPI
791 WSCEnableNSProvider32(
792 IN LPGUID lpProviderId,
793 IN BOOL fEnable);
794
795 #endif /* defined(_WIN64) */
796
797 #endif /* defined(_WIN32_WINNT >= 0x0501) */
798
799 int
800 WSPAPI
801 WSCDeinstallProvider(
802 IN LPGUID lpProviderId,
803 OUT LPINT lpErrno);
804
805 int
806 WSPAPI
807 WSCInstallProvider(
808 IN LPGUID lpProviderId,
809 IN const WCHAR FAR *lpszProviderDllPath,
810 IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
811 IN DWORD dwNumberOfEntries,
812 OUT LPINT lpErrno);
813
814 int
815 WSPAPI
816 WSCGetProviderPath(
817 IN LPGUID lpProviderId,
818 OUT WCHAR FAR *lpszProviderDllPath,
819 IN OUT LPINT lpProviderDllPathLen,
820 OUT LPINT lpErrno);
821
822 #if (_WIN32_WINNT < 0x0600)
823
824 int
825 WSPAPI
826 WSCInstallQOSTemplate(
827 IN const LPGUID Guid,
828 IN LPWSABUF QosName,
829 IN LPQOS Qos);
830
831 typedef int
832 (WSPAPI *LPWSCINSTALLQOSTEMPLATE)(
833 IN const LPGUID Guid,
834 IN LPWSABUF QosName,
835 IN LPQOS Qos);
836
837 int
838 WSPAPI
839 WSCRemoveQOSTemplate(
840 IN const LPGUID Guid,
841 IN LPWSABUF QosName);
842
843 typedef int
844 (WSPAPI *LPWSCREMOVEQOSTEMPLATE)(
845 IN const LPGUID Guid,
846 IN LPWSABUF QosName);
847
848 #endif /* (_WIN32_WINNT < 0x0600) */
849
850 #if(_WIN32_WINNT >= 0x0600)
851
852 int
853 WSPAPI
854 WSCSetProviderInfo(
855 IN LPGUID lpProviderId,
856 IN WSC_PROVIDER_INFO_TYPE InfoType,
857 IN PBYTE Info,
858 IN size_t InfoSize,
859 IN DWORD Flags,
860 OUT LPINT lpErrno);
861
862 int
863 WSPAPI
864 WSCGetProviderInfo(
865 IN LPGUID lpProviderId,
866 IN WSC_PROVIDER_INFO_TYPE InfoType,
867 OUT PBYTE Info,
868 IN OUT *InfoSize,
869 IN DWORD Flags,
870 OUT LPINT lpErrno);
871
872 int
873 WSPAPI
874 WSCSetApplicationCategory(
875 IN LPCWSTR Path,
876 IN DWORD PathLength,
877 IN LPCWSTR Extra OPTIONAL,
878 IN DWORD ExtraLength,
879 IN DWORD PermittedLspCategories,
880 OUT DWORD *pPrevPermLspCat OPTIONAL,
881 OUT LPINT lpErrno);
882
883 int
884 WSPAPI
885 WSCGetApplicationCategory(
886 IN LPCWSTR Path,
887 IN DWORD PathLength,
888 IN LPCWSTR Extra OPTIONAL,
889 IN DWORD ExtraLength,
890 OUT DWORD *pPermittedLspCategories,
891 OUT LPINT lpErrno);
892
893 #define WSCEnumNameSpaceProvidersEx WSAEnumNameSpaceProvidersExW
894 #define LPFN_WSCENUMNAMESPACEPROVIDERSEX LPFN_WSAENUMNAMESPACEPROVIDERSEXW
895
896 INT
897 WSPAPI
898 WSCInstallNameSpaceEx(
899 IN LPWSTR lpszIdentifier,
900 IN LPWSTR lpszPathName,
901 IN DWORD dwNameSpace,
902 IN DWORD dwVersion,
903 IN LPGUID lpProviderId,
904 IN LPBLOB lpProviderSpecific);
905
906 INT
907 WSAAPI
908 WSAAdvertiseProvider(
909 IN const GUID *puuidProviderId,
910 IN const LPCNSPV2_ROUTINE pNSPv2Routine);
911
912 INT
913 WSAAPI
914 WSAUnadvertiseProvider(
915 IN const GUID *puuidProviderId);
916
917 INT
918 WSAAPI
919 WSAProviderCompleteAsyncCall(
920 IN HANDLE hAsyncCall,
921 IN INT iRetCode);
922
923 #if defined(_WIN64)
924
925 int
926 WSPAPI
927 WSCSetProviderInfo32(
928 IN LPGUID lpProviderId,
929 IN WSC_PROVIDER_INFO_TYPE InfoType,
930 IN PBYTE Info,
931 IN size_t InfoSize,
932 IN DWORD Flags,
933 OUT LPINT lpErrno);
934
935 int
936 WSPAPI
937 WSCGetProviderInfo32(
938 IN LPGUID lpProviderId,
939 IN WSC_PROVIDER_INFO_TYPE InfoType,
940 OUT PBYTE Info,
941 IN OUT size_t *InfoSize,
942 IN DWORD Flags,
943 OUT LPINT lpErrno);
944
945 INT
946 WSAAPI
947 WSCEnumNameSpaceProvidersEx32(
948 IN OUT LPDWORD lpdwBufferLength,
949 OUT LPWSANAMESPACE_INFOEXW lpnspBuffer);
950
951 INT
952 WSPAPI
953 WSCInstallNameSpaceEx32(
954 IN LPWSTR lpszIdentifier,
955 IN LPWSTR lpszPathName,
956 IN DWORD dwNameSpace,
957 IN DWORD dwVersion,
958 IN LPGUID lpProviderId,
959 IN LPBLOB lpProviderSpecific);
960
961 #endif /* (_WIN64) */
962
963 #if defined(_WIN64)
964 int
965 WSPAPI
966 WSCInstallProviderAndChains64_32(
967 #else
968 int
969 WSPAPI
970 WSCInstallProviderAndChains(
971 #endif
972 IN LPGUID lpProviderId,
973 IN const LPWSTR lpszProviderDllPath,
974 #if defined(_WIN64)
975 IN const LPWSTR lpszProviderDllPath32,
976 #endif
977 IN const LPWSTR lpszLspName,
978 IN DWORD dwServiceFlags,
979 IN OUT LPWSAPROTOCOL_INFOW lpProtocolInfoList,
980 IN DWORD dwNumberOfEntries,
981 OUT LPDWORD lpdwCatalogEntryId OPTIONAL,
982 OUT LPINT lpErrno);
983
984 #endif /* (_WIN32_WINNT >= 0x0600) */
985
986 BOOL
987 WSPAPI
988 WPUCloseEvent(
989 IN WSAEVENT hEvent,
990 OUT LPINT lpErrno);
991
992 int
993 WSPAPI
994 WPUCloseSocketHandle(
995 IN SOCKET s,
996 OUT LPINT lpErrno);
997
998 WSAEVENT
999 WSPAPI
1000 WPUCreateEvent(
1001 OUT LPINT lpErrno);
1002
1003 SOCKET
1004 WSPAPI
1005 WPUCreateSocketHandle(
1006 IN DWORD dwCatalogEntryId,
1007 IN DWORD_PTR dwContext,
1008 OUT LPINT lpErrno);
1009
1010 int
1011 WSPAPI
1012 WPUFDIsSet(
1013 IN SOCKET s,
1014 IN fd_set FAR *fdset);
1015
1016 int
1017 WSPAPI
1018 WPUGetProviderPath(
1019 IN LPGUID lpProviderId,
1020 OUT WCHAR FAR *lpszProviderDllPath,
1021 IN OUT LPINT lpProviderDllPathLen,
1022 OUT LPINT lpErrno);
1023
1024 SOCKET
1025 WSPAPI
1026 WPUModifyIFSHandle(
1027 IN DWORD dwCatalogEntryId,
1028 IN SOCKET ProposedHandle,
1029 OUT LPINT lpErrno);
1030
1031 BOOL
1032 WSPAPI
1033 WPUPostMessage(
1034 IN HWND hWnd,
1035 IN UINT Msg,
1036 IN WPARAM wParam,
1037 IN LPARAM lParam);
1038
1039 int
1040 WSPAPI
1041 WPUQueryBlockingCallback(
1042 IN DWORD dwCatalogEntryId,
1043 OUT LPBLOCKINGCALLBACK FAR *lplpfnCallback,
1044 OUT PDWORD_PTR lpdwContext,
1045 OUT LPINT lpErrno);
1046
1047 int
1048 WSPAPI
1049 WPUQuerySocketHandleContext(
1050 IN SOCKET s,
1051 OUT PDWORD_PTR lpContext,
1052 OUT LPINT lpErrno);
1053
1054 int
1055 WSPAPI
1056 WPUQueueApc(
1057 IN LPWSATHREADID lpThreadId,
1058 IN LPWSAUSERAPC lpfnUserApc,
1059 IN DWORD_PTR dwContext,
1060 OUT LPINT lpErrno);
1061
1062 BOOL
1063 WSPAPI
1064 WPUResetEvent(
1065 IN WSAEVENT hEvent,
1066 OUT LPINT lpErrno);
1067
1068 BOOL
1069 WSPAPI
1070 WPUSetEvent(
1071 IN WSAEVENT hEvent,
1072 OUT LPINT lpErrno);
1073
1074 int
1075 WSPAPI
1076 WPUCompleteOverlappedRequest(
1077 IN SOCKET s,
1078 IN OUT LPWSAOVERLAPPED lpOverlapped,
1079 IN DWORD dwError,
1080 IN DWORD cbTransferred,
1081 OUT LPINT lpErrno);
1082
1083 INT
1084 WSPAPI
1085 WSCInstallNameSpace(
1086 IN LPWSTR lpszIdentifier,
1087 IN LPWSTR lpszPathName,
1088 IN DWORD dwNameSpace,
1089 IN DWORD dwVersion,
1090 IN LPGUID lpProviderId);
1091
1092 INT
1093 WSPAPI
1094 WSCUnInstallNameSpace(
1095 IN LPGUID lpProviderId);
1096
1097 INT
1098 WSPAPI
1099 WSCEnableNSProvider(
1100 IN LPGUID lpProviderId,
1101 IN BOOL fEnable);
1102
1103 INT
1104 WSAAPI
1105 NSPStartup(
1106 IN LPGUID lpProviderId,
1107 IN OUT LPNSP_ROUTINE lpnspRoutines);
1108
1109 #if !defined(_WIN64)
1110 #include <poppack.h>
1111 #endif
1112
1113 #ifdef __cplusplus
1114 }
1115 #endif