998f1994e925a529575b85f3c47b58a56cb1a07e
[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 WSPData {
41 WORD wVersion;
42 WORD wHighVersion;
43 WCHAR szDescription[WSPDESCRIPTION_LEN+1];
44 } WSPDATA, FAR *LPWSPDATA;
45
46 typedef struct _WSATHREADID {
47 HANDLE ThreadHandle;
48 DWORD_PTR Reserved;
49 } WSATHREADID, FAR *LPWSATHREADID;
50
51 /* Service provider procedure table */
52 typedef struct _WSPPROC_TABLE {
53 LPWSPACCEPT lpWSPAccept;
54 LPWSPADDRESSTOSTRING lpWSPAddressToString;
55 LPWSPASYNCSELECT lpWSPAsyncSelect;
56 LPWSPBIND lpWSPBind;
57 LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
58 LPWSPCLEANUP lpWSPCleanup;
59 LPWSPCLOSESOCKET lpWSPCloseSocket;
60 LPWSPCONNECT lpWSPConnect;
61 LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
62 LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
63 LPWSPEVENTSELECT lpWSPEventSelect;
64 LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
65 LPWSPGETPEERNAME lpWSPGetPeerName;
66 LPWSPGETSOCKNAME lpWSPGetSockName;
67 LPWSPGETSOCKOPT lpWSPGetSockOpt;
68 LPWSPGETQOSBYNAME lpWSPGetQOSByName;
69 LPWSPIOCTL lpWSPIoctl;
70 LPWSPJOINLEAF lpWSPJoinLeaf;
71 LPWSPLISTEN lpWSPListen;
72 LPWSPRECV lpWSPRecv;
73 LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
74 LPWSPRECVFROM lpWSPRecvFrom;
75 LPWSPSELECT lpWSPSelect;
76 LPWSPSEND lpWSPSend;
77 LPWSPSENDDISCONNECT lpWSPSendDisconnect;
78 LPWSPSENDTO lpWSPSendTo;
79 LPWSPSETSOCKOPT lpWSPSetSockOpt;
80 LPWSPSHUTDOWN lpWSPShutdown;
81 LPWSPSOCKET lpWSPSocket;
82 LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
83 } WSPPROC_TABLE, FAR* LPWSPPROC_TABLE;
84
85 /* Service Provider upcall table */
86 typedef struct _WSPUPCALLTABLE {
87 LPWPUCLOSEEVENT lpWPUCloseEvent;
88 LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
89 LPWPUCREATEEVENT lpWPUCreateEvent;
90 LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
91 LPWPUFDISSET lpWPUFDIsSet;
92 LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
93 LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
94 LPWPUPOSTMESSAGE lpWPUPostMessage;
95 LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
96 LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
97 LPWPUQUEUEAPC lpWPUQueueApc;
98 LPWPURESETEVENT lpWPUResetEvent;
99 LPWPUSETEVENT lpWPUSetEvent;
100 LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
101 LPWPUCLOSETHREAD lpWPUCloseThread;
102 } WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
103
104 #if(_WIN32_WINNT >= 0x0600)
105
106 #define LSP_SYSTEM 0x80000000
107 #define LSP_INSPECTOR 0x00000001
108 #define LSP_REDIRECTOR 0x00000002
109 #define LSP_PROXY 0x00000004
110 #define LSP_FIREWALL 0x00000008
111 #define LSP_INBOUND_MODIFY 0x00000010
112 #define LSP_OUTBOUND_MODIFY 0x00000020
113 #define LSP_CRYPTO_COMPRESS 0x00000040
114 #define LSP_LOCAL_CACHE 0x00000080
115
116 typedef enum _WSC_PROVIDER_INFO_TYPE {
117 ProviderInfoLspCategories,
118 ProviderInfoAudit
119 } WSC_PROVIDER_INFO_TYPE ;
120
121 typedef struct _WSC_PROVIDER_AUDIT_INFO {
122 DWORD RecordSize;
123 PVOID Reserved;
124 } WSC_PROVIDER_AUDIT_INFO;
125
126 #endif /* (_WIN32_WINNT >= 0x0600) */
127
128 typedef struct _NSP_ROUTINE {
129 DWORD cbSize;
130 DWORD dwMajorVersion;
131 DWORD dwMinorVersion;
132 LPNSPCLEANUP NSPCleanup;
133 LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
134 LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
135 LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
136 LPNSPSETSERVICE NSPSetService;
137 LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
138 LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
139 LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
140 LPNSPIOCTL NSPIoctl;
141 } NSP_ROUTINE, *PNSP_ROUTINE, FAR* LPNSP_ROUTINE;
142
143 typedef struct _NSPV2_ROUTINE {
144 DWORD cbSize;
145 DWORD dwMajorVersion;
146 DWORD dwMinorVersion;
147 LPNSPV2STARTUP NSPv2Startup;
148 LPNSPV2CLEANUP NSPv2Cleanup;
149 LPNSPV2LOOKUPSERVICEBEGIN NSPv2LookupServiceBegin;
150 LPNSPV2LOOKUPSERVICENEXTEX NSPv2LookupServiceNextEx;
151 LPNSPV2LOOKUPSERVICEEND NSPv2LookupServiceEnd;
152 LPNSPV2SETSERVICEEX NSPv2SetServiceEx;
153 LPNSPV2CLIENTSESSIONRUNDOWN NSPv2ClientSessionRundown;
154 } NSPV2_ROUTINE, *PNSPV2_ROUTINE, *LPNSPV2_ROUTINE;
155 typedef const NSPV2_ROUTINE *PCNSPV2_ROUTINE, *LPCNSPV2_ROUTINE;
156
157 typedef BOOL
158 (CALLBACK FAR *LPBLOCKINGCALLBACK)(
159 DWORD_PTR dwContext);
160
161 typedef VOID
162 (CALLBACK FAR *LPWSAUSERAPC)(
163 DWORD_PTR dwContext);
164
165 typedef SOCKET
166 (WSPAPI *LPWSPACCEPT)(
167 IN SOCKET s,
168 OUT struct sockaddr FAR *addr OPTIONAL,
169 IN OUT LPINT addrlen OPTIONAL,
170 IN LPCONDITIONPROC lpfnCondition OPTIONAL,
171 IN DWORD_PTR dwCallbackData OPTIONAL,
172 OUT LPINT lpErrno);
173
174 typedef INT
175 (WSPAPI *LPWSPADDRESSTOSTRING)(
176 IN LPSOCKADDR lpsaAddress,
177 IN DWORD dwAddressLength,
178 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
179 OUT LPWSTR lpszAddressString,
180 IN OUT LPDWORD lpdwAddressStringLength,
181 OUT LPINT lpErrno);
182
183 typedef int
184 (WSPAPI *LPWSPASYNCSELECT)(
185 IN SOCKET s,
186 IN HWND hWnd,
187 IN unsigned int wMsg,
188 IN long lEvent,
189 OUT LPINT lpErrno);
190
191 typedef int
192 (WSPAPI *LPWSPBIND)(
193 IN SOCKET s,
194 IN const struct sockaddr FAR *name,
195 IN int namelen,
196 OUT LPINT lpErrno);
197
198 typedef int
199 (WSPAPI *LPWSPCANCELBLOCKINGCALL)(
200 OUT LPINT lpErrno);
201
202 typedef int
203 (WSPAPI *LPWSPCLEANUP)(
204 OUT LPINT lpErrno);
205
206 typedef int
207 (WSPAPI *LPWSPCLOSESOCKET)(
208 IN SOCKET s,
209 OUT LPINT lpErrno);
210
211 typedef int
212 (WSPAPI *LPWSPCONNECT)(
213 IN SOCKET s,
214 IN const struct sockaddr FAR *name,
215 IN int namelen,
216 IN LPWSABUF lpCallerData OPTIONAL,
217 OUT LPWSABUF lpCalleeData OPTIONAL,
218 IN LPQOS lpSQOS OPTIONAL,
219 IN LPQOS lpGQOS OPTIONAL,
220 OUT LPINT lpErrno);
221
222 typedef int
223 (WSPAPI *LPWSPDUPLICATESOCKET)(
224 IN SOCKET s,
225 IN DWORD dwProcessId,
226 OUT LPWSAPROTOCOL_INFOW lpProtocolInfo,
227 OUT LPINT lpErrno);
228
229 typedef int
230 (WSPAPI *LPWSPENUMNETWORKEVENTS)(
231 IN SOCKET s,
232 IN WSAEVENT hEventObject,
233 OUT LPWSANETWORKEVENTS lpNetworkEvents,
234 OUT LPINT lpErrno);
235
236 typedef int
237 (WSPAPI *LPWSPEVENTSELECT)(
238 IN SOCKET s,
239 IN WSAEVENT hEventObject,
240 IN long lNetworkEvents,
241 OUT LPINT lpErrno);
242
243 typedef BOOL
244 (WSPAPI *LPWSPGETOVERLAPPEDRESULT)(
245 IN SOCKET s,
246 IN LPWSAOVERLAPPED lpOverlapped,
247 OUT LPDWORD lpcbTransfer,
248 IN BOOL fWait,
249 OUT LPDWORD lpdwFlags,
250 OUT LPINT lpErrno);
251
252 typedef int
253 (WSPAPI *LPWSPGETPEERNAME)(
254 IN SOCKET s,
255 OUT struct sockaddr FAR *name,
256 IN OUT LPINT namelen,
257 OUT LPINT lpErrno);
258
259 typedef int
260 (WSPAPI *LPWSPGETSOCKNAME)(
261 IN SOCKET s,
262 OUT struct sockaddr FAR *name,
263 IN OUT LPINT namelen,
264 OUT LPINT lpErrno);
265
266 typedef int
267 (WSPAPI *LPWSPGETSOCKOPT)(
268 IN SOCKET s,
269 IN int level,
270 IN int optname,
271 OUT char FAR *optval,
272 IN OUT LPINT optlen,
273 OUT LPINT lpErrno);
274
275 typedef BOOL
276 (WSPAPI *LPWSPGETQOSBYNAME)(
277 IN SOCKET s,
278 IN LPWSABUF lpQOSName,
279 OUT LPQOS lpQOS,
280 OUT LPINT lpErrno);
281
282 typedef int
283 (WSPAPI *LPWSPIOCTL)(
284 IN SOCKET s,
285 IN DWORD dwIoControlCode,
286 IN LPVOID lpvInBuffer OPTIONAL,
287 IN DWORD cbInBuffer,
288 OUT LPVOID lpvOutBuffer OPTIONAL,
289 IN DWORD cbOutBuffer,
290 OUT LPDWORD lpcbBytesReturned,
291 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
292 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
293 IN LPWSATHREADID lpThreadId OPTIONAL,
294 OUT LPINT lpErrno);
295
296 typedef SOCKET
297 (WSPAPI *LPWSPJOINLEAF)(
298 IN SOCKET s,
299 IN const struct sockaddr FAR *name,
300 IN int namelen,
301 IN LPWSABUF lpCallerData OPTIONAL,
302 OUT LPWSABUF lpCalleeData OPTIONAL,
303 IN LPQOS lpSQOS OPTIONAL,
304 IN LPQOS lpGQOS OPTIONAL,
305 IN DWORD dwFlags,
306 OUT LPINT lpErrno);
307
308 typedef int
309 (WSPAPI *LPWSPLISTEN)(
310 IN SOCKET s,
311 IN int backlog,
312 OUT LPINT lpErrno);
313
314 typedef int
315 (WSPAPI *LPWSPRECV)(
316 IN SOCKET s,
317 IN LPWSABUF lpBuffers,
318 IN DWORD dwBufferCount,
319 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
320 IN OUT LPDWORD lpFlags,
321 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
322 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
323 IN LPWSATHREADID lpThreadId OPTIONAL,
324 IN LPINT lpErrno);
325
326 typedef int
327 (WSPAPI *LPWSPRECVDISCONNECT)(
328 IN SOCKET s,
329 IN LPWSABUF lpInboundDisconnectData OPTIONAL,
330 OUT LPINT lpErrno);
331
332 typedef int
333 (WSPAPI *LPWSPRECVFROM)(
334 IN SOCKET s,
335 IN LPWSABUF lpBuffers,
336 IN DWORD dwBufferCount,
337 OUT LPDWORD lpNumberOfBytesRecvd OPTIONAL,
338 IN OUT LPDWORD lpFlags,
339 OUT struct sockaddr FAR *lpFrom OPTIONAL,
340 IN OUT LPINT lpFromlen OPTIONAL,
341 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
342 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
343 IN LPWSATHREADID lpThreadId OPTIONAL,
344 OUT LPINT lpErrno);
345
346 typedef int
347 (WSPAPI *LPWSPSELECT)(
348 IN int nfds,
349 IN OUT fd_set FAR *readfds OPTIONAL,
350 IN OUT fd_set FAR *writefds OPTIONAL,
351 IN OUT fd_set FAR *exceptfds OPTIONAL,
352 IN const struct timeval FAR *timeout OPTIONAL,
353 OUT LPINT lpErrno);
354
355 typedef int
356 (WSPAPI *LPWSPSEND)(
357 IN SOCKET s,
358 IN LPWSABUF lpBuffers,
359 IN DWORD dwBufferCount,
360 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
361 IN DWORD dwFlags,
362 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
363 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
364 IN LPWSATHREADID lpThreadId OPTIONAL,
365 OUT LPINT lpErrno);
366
367 typedef int
368 (WSPAPI *LPWSPSENDDISCONNECT)(
369 IN SOCKET s,
370 IN LPWSABUF lpOutboundDisconnectData OPTIONAL,
371 OUT LPINT lpErrno);
372
373 typedef int
374 (WSPAPI *LPWSPSENDTO)(
375 IN SOCKET s,
376 IN LPWSABUF lpBuffers,
377 IN DWORD dwBufferCount,
378 OUT LPDWORD lpNumberOfBytesSent OPTIONAL,
379 IN DWORD dwFlags,
380 IN const struct sockaddr FAR *lpTo OPTIONAL,
381 IN int iTolen,
382 IN OUT LPWSAOVERLAPPED lpOverlapped OPTIONAL,
383 IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine OPTIONAL,
384 IN LPWSATHREADID lpThreadId OPTIONAL,
385 OUT LPINT lpErrno);
386
387 typedef int
388 (WSPAPI *LPWSPSETSOCKOPT)(
389 IN SOCKET s,
390 IN int level,
391 IN int optname,
392 IN const char FAR *optval OPTIONAL,
393 IN int optlen,
394 OUT LPINT lpErrno);
395
396 typedef int
397 (WSPAPI *LPWSPSHUTDOWN)(
398 IN SOCKET s,
399 IN int how,
400 OUT LPINT lpErrno);
401
402 typedef SOCKET
403 (WSPAPI *LPWSPSOCKET)(
404 IN int af,
405 IN int type,
406 IN int protocol,
407 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
408 IN GROUP g,
409 IN DWORD dwFlags,
410 OUT LPINT lpErrno);
411
412 typedef INT
413 (WSPAPI *LPWSPSTRINGTOADDRESS)(
414 IN LPWSTR AddressString,
415 IN INT AddressFamily,
416 IN LPWSAPROTOCOL_INFOW lpProtocolInfo OPTIONAL,
417 OUT LPSOCKADDR lpAddress,
418 IN OUT LPINT lpAddressLength,
419 OUT LPINT lpErrno);
420
421 typedef BOOL
422 (WSPAPI *LPWPUCLOSEEVENT)(
423 IN WSAEVENT hEvent,
424 OUT LPINT lpErrno);
425
426 typedef int
427 (WSPAPI *LPWPUCLOSESOCKETHANDLE)(
428 IN SOCKET s,
429 OUT LPINT lpErrno);
430
431 typedef WSAEVENT
432 (WSPAPI *LPWPUCREATEEVENT)(
433 OUT LPINT lpErrno);
434
435 typedef SOCKET
436 (WSPAPI *LPWPUCREATESOCKETHANDLE)(
437 IN DWORD dwCatalogEntryId,
438 IN DWORD_PTR dwContext,
439 OUT LPINT lpErrno);
440
441 typedef int
442 (WSPAPI *LPWPUFDISSET)(
443 IN SOCKET s,
444 IN fd_set FAR *fdset);
445
446 typedef int
447 (WSPAPI *LPWPUGETPROVIDERPATH)(
448 IN LPGUID lpProviderId,
449 OUT WCHAR FAR *lpszProviderDllPath,
450 IN OUT LPINT lpProviderDllPathLen,
451 OUT LPINT lpErrno);
452
453 typedef SOCKET
454 (WSPAPI *LPWPUMODIFYIFSHANDLE)(
455 IN DWORD dwCatalogEntryId,
456 IN SOCKET ProposedHandle,
457 OUT LPINT lpErrno);
458
459 typedef BOOL
460 (WSPAPI *LPWPUPOSTMESSAGE)(
461 IN HWND hWnd,
462 IN UINT Msg,
463 IN WPARAM wParam,
464 IN LPARAM lParam);
465
466 typedef int
467 (WSPAPI *LPWPUQUERYBLOCKINGCALLBACK)(
468 IN DWORD dwCatalogEntryId,
469 OUT LPBLOCKINGCALLBACK FAR *lplpfnCallback,
470 OUT PDWORD_PTR lpdwContext,
471 OUT LPINT lpErrno);
472
473 typedef int
474 (WSPAPI *LPWPUQUERYSOCKETHANDLECONTEXT)(
475 IN SOCKET s,
476 OUT PDWORD_PTR lpContext,
477 OUT LPINT lpErrno);
478
479 typedef int
480 (WSPAPI *LPWPUQUEUEAPC)(
481 IN LPWSATHREADID lpThreadId,
482 IN LPWSAUSERAPC lpfnUserApc,
483 IN DWORD_PTR dwContext,
484 OUT LPINT lpErrno);
485
486 typedef BOOL
487 (WSPAPI *LPWPURESETEVENT)(
488 IN WSAEVENT hEvent,
489 OUT LPINT lpErrno);
490
491 typedef BOOL
492 (WSPAPI *LPWPUSETEVENT)(
493 IN WSAEVENT hEvent,
494 OUT LPINT lpErrno);
495
496 typedef int
497 (WSPAPI *LPWPUOPENCURRENTTHREAD)(
498 OUT LPWSATHREADID lpThreadId,
499 OUT LPINT lpErrno);
500
501 typedef int
502 (WSPAPI *LPWPUCLOSETHREAD)(
503 IN LPWSATHREADID lpThreadId,
504 OUT LPINT lpErrno);
505
506 typedef int
507 (WSPAPI *LPWPUCOMPLETEOVERLAPPEDREQUEST)(
508 IN SOCKET s,
509 IN OUT LPWSAOVERLAPPED lpOverlapped,
510 IN DWORD dwError,
511 IN DWORD cbTransferred,
512 OUT LPINT lpErrno);
513
514 typedef int
515 (WSPAPI *LPWSPSTARTUP)(
516 IN WORD wVersionRequested,
517 IN LPWSPDATA lpWSPData,
518 IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
519 IN WSPUPCALLTABLE UpcallTable,
520 OUT LPWSPPROC_TABLE lpProcTable);
521
522 typedef int
523 (WSPAPI *LPWSCENUMPROTOCOLS)(
524 IN LPINT lpiProtocols OPTIONAL,
525 OUT LPWSAPROTOCOL_INFOW lpProtocolBuffer OPTIONAL,
526 IN OUT LPDWORD lpdwBufferLength,
527 OUT LPINT lpErrno);
528
529 typedef int
530 (WSPAPI *LPWSCDEINSTALLPROVIDER)(
531 IN LPGUID lpProviderId,
532 OUT LPINT lpErrno);
533
534 typedef int
535 (WSPAPI *LPWSCINSTALLPROVIDER)(
536 IN LPGUID lpProviderId,
537 IN const WCHAR FAR *lpszProviderDllPath,
538 IN const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
539 IN DWORD dwNumberOfEntries,
540 OUT LPINT lpErrno);
541
542 typedef int
543 (WSPAPI *LPWSCGETPROVIDERPATH)(
544 IN LPGUID lpProviderId,
545 OUT WCHAR FAR *lpszProviderDllPath,
546 IN OUT LPINT lpProviderDllPathLen,
547 OUT LPINT lpErrno);
548
549 typedef INT
550 (WSPAPI *LPWSCINSTALLNAMESPACE)(
551 IN LPWSTR lpszIdentifier,
552 IN LPWSTR lpszPathName,
553 IN DWORD dwNameSpace,
554 IN DWORD dwVersion,
555 IN LPGUID lpProviderId);
556
557 typedef INT
558 (WSPAPI *LPWSCUNINSTALLNAMESPACE)(
559 IN LPGUID lpProviderId);
560
561 typedef INT
562 (WSPAPI *LPWSCENABLENSPROVIDER)(
563 IN LPGUID lpProviderId,
564 IN BOOL fEnable);
565
566 typedef INT
567 (WSAAPI *LPNSPCLEANUP)(
568 IN LPGUID lpProviderId);
569
570 typedef INT
571 (WSAAPI *LPNSPLOOKUPSERVICEBEGIN)(
572 IN LPGUID lpProviderId,
573 IN LPWSAQUERYSETW lpqsRestrictions,
574 IN LPWSASERVICECLASSINFOW lpServiceClassInfo,
575 IN DWORD dwControlFlags,
576 OUT LPHANDLE lphLookup);
577
578 typedef INT
579 (WSAAPI *LPNSPLOOKUPSERVICENEXT)(
580 IN HANDLE hLookup,
581 IN DWORD dwControlFlags,
582 IN OUT LPDWORD lpdwBufferLength,
583 OUT LPWSAQUERYSETW lpqsResults);
584
585 #if(_WIN32_WINNT >= 0x0501)
586 typedef INT
587 (WSAAPI *LPNSPIOCTL)(
588 IN HANDLE hLookup,
589 IN DWORD dwControlCode,
590 IN LPVOID lpvInBuffer,
591 IN DWORD cbInBuffer,
592 OUT LPVOID lpvOutBuffer,
593 IN DWORD cbOutBuffer,
594 OUT LPDWORD lpcbBytesReturned,
595 IN LPWSACOMPLETION lpCompletion OPTIONAL,
596 IN LPWSATHREADID lpThreadId);
597 #endif
598
599 typedef INT
600 (WSAAPI *LPNSPLOOKUPSERVICEEND)(
601 IN HANDLE hLookup);
602
603 typedef INT
604 (WSAAPI *LPNSPSETSERVICE)(
605 IN LPGUID lpProviderId,
606 IN LPWSASERVICECLASSINFOW lpServiceClassInfo,
607 IN LPWSAQUERYSETW lpqsRegInfo,
608 IN WSAESETSERVICEOP essOperation,
609 IN DWORD dwControlFlags);
610
611 typedef INT
612 (WSAAPI *LPNSPINSTALLSERVICECLASS)(
613 IN LPGUID lpProviderId,
614 IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
615
616 typedef INT
617 (WSAAPI *LPNSPREMOVESERVICECLASS)(
618 IN LPGUID lpProviderId,
619 IN LPGUID lpServiceClassId);
620
621 typedef INT
622 (WSAAPI *LPNSPGETSERVICECLASSINFO)(
623 IN LPGUID lpProviderId,
624 IN LPDWORD lpdwBufSize,
625 IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
626
627 typedef INT
628 (WSAAPI *LPNSPSTARTUP)(
629 IN LPGUID lpProviderId,
630 IN OUT LPNSP_ROUTINE lpnspRoutines);
631
632 typedef INT
633 (WSAAPI *LPNSPV2STARTUP)(
634 IN LPGUID lpProviderId,
635 OUT LPVOID *ppvClientSessionArg);
636
637 typedef INT
638 (WSAAPI *LPNSPV2CLEANUP)(
639 IN LPGUID lpProviderId,
640 IN LPVOID pvClientSessionArg);
641
642 typedef INT
643 (WSAAPI *LPNSPV2LOOKUPSERVICEBEGIN)(
644 IN LPGUID lpProviderId,
645 IN LPWSAQUERYSET2W lpqsRestrictions,
646 IN DWORD dwControlFlags,
647 IN LPVOID lpvClientSessionArg,
648 OUT LPHANDLE lphLookup);
649
650 typedef VOID
651 (WSAAPI *LPNSPV2LOOKUPSERVICENEXTEX)(
652 IN HANDLE hAsyncCall,
653 IN HANDLE hLookup,
654 IN DWORD dwControlFlags,
655 IN LPDWORD lpdwBufferLength,
656 OUT LPWSAQUERYSET2W lpqsResults);
657
658 typedef INT
659 (WSAAPI *LPNSPV2LOOKUPSERVICEEND)(
660 IN HANDLE hLookup);
661
662 typedef VOID
663 (WSAAPI *LPNSPV2SETSERVICEEX)(
664 IN HANDLE hAsyncCall,
665 IN LPGUID lpProviderId,
666 IN LPWSAQUERYSET2W lpqsRegInfo,
667 IN WSAESETSERVICEOP essOperation,
668 IN DWORD dwControlFlags,
669 IN LPVOID lpvClientSessionArg);
670
671 typedef VOID
672 (WSAAPI *LPNSPV2CLIENTSESSIONRUNDOWN)(
673 IN LPGUID lpProviderId,
674 IN LPVOID pvClientSessionArg);
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 defined(_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