c3eb837b03bb69a33fd483168f24973a26344a1a
[reactos.git] / reactos / dll / win32 / ws2_32_new / inc / ws2_32p.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS WinSock 2.2 Library
4 * FILE: lib/ws2_32.h
5 * PURPOSE: WinSock 2.2 Main Header
6 */
7
8 #pragma once
9
10 #define WINSOCK_ROOT "System\\CurrentControlSet\\Services\\WinSock2\\Parameters"
11 #define MAXALIASES 35
12
13 typedef enum _WSASYNCOPS
14 {
15 WsAsyncGetHostByAddr,
16 WsAsyncGetHostByName,
17 WsAsyncGetProtoByName,
18 WsAsyncGetProtoByNumber,
19 WsAsyncGetServByName,
20 WsAsyncGetServByPort,
21 WsAsyncTerminate,
22 } WSASYNCOPS;
23
24 typedef struct _WSASYNCBLOCK
25 {
26 LIST_ENTRY AsyncQueue;
27 HANDLE TaskHandle;
28 WSASYNCOPS Operation;
29 union
30 {
31 struct
32 {
33 HWND hWnd;
34 UINT wMsg;
35 PCHAR ByWhat;
36 DWORD Length;
37 DWORD Type;
38 PVOID Buffer;
39 DWORD BufferLength;
40 } GetHost;
41 struct
42 {
43 HWND hWnd;
44 UINT wMsg;
45 PCHAR ByWhat;
46 DWORD Length;
47 PVOID Buffer;
48 DWORD BufferLength;
49 } GetProto;
50 struct
51 {
52 HWND hWnd;
53 UINT wMsg;
54 PCHAR ByWhat;
55 DWORD Length;
56 PCHAR Protocol;
57 PVOID Buffer;
58 DWORD BufferLength;
59 } GetServ;
60 };
61 } WSASYNCBLOCK, *PWSASYNCBLOCK;
62
63 typedef struct _WSASYNCCONTEXT
64 {
65 LIST_ENTRY AsyncQueue;
66 HANDLE AsyncEvent;
67 LIST_ENTRY SocketList;
68 } WSASYNCCONTEXT, *PWSASYNCCONTEXT;
69
70 typedef struct _WSPROTO_BUFFER
71 {
72 PROTOENT Protoent;
73 PCHAR Aliases[MAXALIASES];
74 CHAR LineBuffer[512];
75 } WSPROTO_BUFFER, *PWSPROTO_BUFFER;
76
77 typedef struct _TPROVIDER
78 {
79 LONG RefCount;
80 WSPPROC_TABLE Service;
81 HINSTANCE DllHandle;
82 } TPROVIDER, *PTPROVIDER;
83
84 typedef struct _TCATALOG_ENTRY
85 {
86 LIST_ENTRY CatalogLink;
87 LONG RefCount;
88 PTPROVIDER Provider;
89 CHAR DllPath[MAX_PATH];
90 WSAPROTOCOL_INFOW ProtocolInfo;
91 } TCATALOG_ENTRY, *PTCATALOG_ENTRY;
92
93 typedef struct _TCATALOG
94 {
95 LIST_ENTRY ProtocolList;
96 DWORD ItemCount;
97 DWORD UniqueId;
98 DWORD NextId;
99 HKEY CatalogKey;
100 RTL_CRITICAL_SECTION Lock;
101 BOOLEAN Initialized;
102 } TCATALOG, *PTCATALOG;
103
104 typedef struct _NSPROVIDER
105 {
106 LONG RefCount;
107 DWORD NamespaceId;
108 HINSTANCE DllHandle;
109 GUID ProviderId;
110 NSP_ROUTINE Service;
111 } NSPROVIDER, *PNS_PROVIDER;
112
113 typedef struct _NSQUERY_PROVIDER
114 {
115 LIST_ENTRY QueryLink;
116 PNS_PROVIDER Provider;
117 HANDLE LookupHandle;
118 } NSQUERY_PROVIDER, *PNSQUERY_PROVIDER;
119
120 typedef struct _NSCATALOG_ENTRY
121 {
122 LIST_ENTRY CatalogLink;
123 LONG RefCount;
124 PNS_PROVIDER Provider;
125 LONG AddressFamily;
126 DWORD NamespaceId;
127 DWORD Version;
128 LPWSTR ProviderName;
129 BOOLEAN Enabled;
130 BOOLEAN StoresServiceClassInfo;
131 GUID ProviderId;
132 WCHAR DllPath[MAX_PATH];
133 } NSCATALOG_ENTRY, *PNSCATALOG_ENTRY;
134
135 typedef struct _NSCATALOG
136 {
137 LIST_ENTRY CatalogList;
138 DWORD ItemCount;
139 DWORD UniqueId;
140 HKEY CatalogKey;
141 RTL_CRITICAL_SECTION Lock;
142 } NSCATALOG, *PNSCATALOG;
143
144 typedef struct _NSQUERY
145 {
146 DWORD Signature;
147 LONG RefCount;
148 BOOLEAN ShuttingDown;
149 LIST_ENTRY ProviderList;
150 PNSQUERY_PROVIDER ActiveProvider;
151 RTL_CRITICAL_SECTION Lock;
152 PNSQUERY_PROVIDER CurrentProvider;
153 LPWSAQUERYSETW QuerySet;
154 DWORD ControlFlags;
155 PNSCATALOG Catalog;
156 DWORD TryAgain;
157 } NSQUERY, *PNSQUERY;
158
159 typedef struct _WSPROCESS
160 {
161 LONG RefCount;
162 HANDLE ApcHelper;
163 HANDLE HandleHelper;
164 HANDLE NotificationHelper;
165 PTCATALOG ProtocolCatalog;
166 PNSCATALOG NamespaceCatalog;
167 HANDLE ProtocolCatalogEvent;
168 HANDLE NamespaceCatalogEvent;
169 DWORD Version;
170 BOOLEAN LockReady;
171 RTL_CRITICAL_SECTION ThreadLock;
172 } WSPROCESS, *PWSPROCESS;
173
174 typedef struct _WSTHREAD
175 {
176 PWSPROCESS Process;
177 WSATHREADID WahThreadId;
178 HANDLE AsyncHelper;
179 LPWSPCANCELBLOCKINGCALL CancelBlockingCall;
180 LPBLOCKINGCALLBACK BlockingCallback;
181 FARPROC BlockingHook;
182 BOOLEAN Blocking;
183 BOOLEAN Cancelled;
184 CHAR Buffer[32];
185 PCHAR Hostent;
186 PCHAR Servent;
187 DWORD HostentSize;
188 DWORD ServentSize;
189 DWORD OpenType;
190 PVOID ProtocolInfo;
191 } WSTHREAD, *PWSTHREAD;
192
193 typedef struct _WSSOCKET
194 {
195 LONG RefCount;
196 HANDLE Handle;
197 PWSPROCESS Process;
198 PTPROVIDER Provider;
199 PTCATALOG_ENTRY CatalogEntry;
200 BOOLEAN Overlapped;
201 BOOLEAN ApiSocket;
202 BOOLEAN IsProvider;
203 } WSSOCKET, *PWSSOCKET;
204
205 typedef struct _ENUM_CONTEXT
206 {
207 LPWSAQUERYSETW lpqsRestrictions;
208 INT ErrorCode;
209 PNSQUERY NsQuery;
210 PNSCATALOG Catalog;
211 } ENUM_CONTEXT, *PENUM_CONTEXT;
212
213 typedef struct _PROTOCOL_ENUM_CONTEXT
214 {
215 LPINT Protocols;
216 LPWSAPROTOCOL_INFOW ProtocolBuffer;
217 DWORD BufferLength;
218 DWORD BufferUsed;
219 DWORD Count;
220 INT ErrorCode;
221 } PROTOCOL_ENUM_CONTEXT, *PPROTOCOL_ENUM_CONTEXT;
222
223 typedef struct _WS_BUFFER
224 {
225 ULONG_PTR Position;
226 SIZE_T MaxSize;
227 SIZE_T BytesUsed;
228 } WS_BUFFER, *PWS_BUFFER;
229
230 typedef BOOL
231 (WINAPI *PNSCATALOG_ENUMERATE_PROC)(
232 IN PVOID Context,
233 IN PNSCATALOG_ENTRY Entry
234 );
235
236 typedef BOOL
237 (WINAPI *PTCATALOG_ENUMERATE_PROC)(
238 IN PVOID Context,
239 IN PTCATALOG_ENTRY Entry
240 );
241
242 typedef BOOL
243 (WINAPI *PWS_SOCK_POST_ROUTINE)(
244 IN HWND hWnd,
245 IN UINT wMsg,
246 IN WPARAM wParam,
247 IN LPARAM lParam
248 );
249
250 extern HINSTANCE WsDllHandle;
251 extern HANDLE WsSockHeap;
252 extern PWAH_HANDLE_TABLE WsSockHandleTable;
253 extern PWSPROCESS CurrentWsProcess;
254 extern DWORD GlobalTlsIndex;
255 #define TlsIndex GlobalTlsIndex
256 extern BOOLEAN WsAsyncThreadInitialized;
257 extern PWS_SOCK_POST_ROUTINE WsSockPostRoutine;
258
259 LPSTR
260 WSAAPI
261 AnsiDupFromUnicode(IN LPWSTR UnicodeString);
262
263 LPWSTR
264 WSAAPI
265 UnicodeDupFromAnsi(IN LPSTR AnsiString);
266
267 VOID
268 WSAAPI
269 WsRasInitializeAutodial(VOID);
270
271 VOID
272 WSAAPI
273 WsRasUninitializeAutodial(VOID);
274
275 BOOL
276 WSAAPI
277 WSAttemptAutodialName(IN CONST LPWSAQUERYSETW lpqsRestrictions);
278
279 BOOL
280 WSAAPI
281 WSAttemptAutodialAddr(
282 IN CONST SOCKADDR FAR *Name,
283 IN INT NameLength
284 );
285
286 VOID
287 WSAAPI
288 WSNoteSuccessfulHostentLookup(
289 IN CONST CHAR FAR *Name,
290 IN CONST ULONG Address
291 );
292
293 INT
294 WSAAPI
295 MapUnicodeProtocolInfoToAnsi(IN LPWSAPROTOCOL_INFOW UnicodeInfo,
296 OUT LPWSAPROTOCOL_INFOA AnsiInfo);
297
298 INT
299 WSAAPI
300 MapAnsiQuerySetToUnicode(IN LPWSAQUERYSETA AnsiSet,
301 IN OUT PSIZE_T SetSize,
302 OUT LPWSAQUERYSETW UnicodeSet);
303
304 INT
305 WSAAPI
306 MapUnicodeQuerySetToAnsi(OUT LPWSAQUERYSETW UnicodeSet,
307 IN OUT PSIZE_T SetSize,
308 IN LPWSAQUERYSETA AnsiSet);
309
310 INT
311 WSAAPI
312 CopyQuerySetW(IN LPWSAQUERYSETW UnicodeSet,
313 OUT LPWSAQUERYSETW *UnicodeCopy);
314
315 INT
316 WSAAPI
317 WsSlowProlog(VOID);
318
319 INT
320 WSAAPI
321 WsSlowPrologTid(OUT LPWSATHREADID *ThreadId);
322
323 PWSSOCKET
324 WSAAPI
325 WsSockGetSocket(IN SOCKET Handle);
326
327 INT
328 WSAAPI
329 WsApiProlog(OUT PWSPROCESS *Process,
330 OUT PWSTHREAD *Thread);
331
332 HKEY
333 WSAAPI
334 WsOpenRegistryRoot(VOID);
335
336 VOID
337 WSAAPI
338 WsCreateStartupSynchronization(VOID);
339
340 VOID
341 WSAAPI
342 WsDestroyStartupSynchronization(VOID);
343
344 INT
345 WSAAPI
346 WsSetupCatalogProtection(IN HKEY CatalogKey,
347 IN HANDLE CatalogEvent,
348 OUT LPDWORD UniqueId);
349
350 BOOL
351 WSAAPI
352 WsCheckCatalogState(IN HANDLE Event);
353
354 PNSCATALOG
355 WSAAPI
356 WsNcAllocate(VOID);
357
358 VOID
359 WSAAPI
360 WsNcDelete(IN PNSCATALOG Catalog);
361
362 INT
363 WSAAPI
364 WsNcInitializeFromRegistry(IN PNSCATALOG Catalog,
365 IN HKEY ParentKey,
366 IN HANDLE CatalogEvent);
367
368 INT
369 WSAAPI
370 WsNcRefreshFromRegistry(IN PNSCATALOG Catalog,
371 IN HANDLE CatalogEvent);
372
373 VOID
374 WSAAPI
375 WsNcUpdateNamespaceList(IN PNSCATALOG Catalog,
376 IN PLIST_ENTRY List);
377
378 BOOL
379 WSAAPI
380 WsNcMatchProtocols(IN DWORD NameSpace,
381 IN LONG AddressFamily,
382 IN LPWSAQUERYSETW QuerySet);
383
384 INT
385 WSAAPI
386 WsNcLoadProvider(IN PNSCATALOG Catalog,
387 IN PNSCATALOG_ENTRY CatalogEntry);
388
389 INT
390 WSAAPI
391 WsNcGetCatalogFromProviderId(IN PNSCATALOG Catalog,
392 IN LPGUID ProviderId,
393 OUT PNSCATALOG_ENTRY *CatalogEntry);
394
395 VOID
396 WSAAPI
397 WsNcEnumerateCatalogItems(IN PNSCATALOG Catalog,
398 IN PNSCATALOG_ENUMERATE_PROC Callback,
399 IN PVOID Context);
400
401 INT
402 WSAAPI
403 WsNcGetServiceClassInfo(IN PNSCATALOG Catalog,
404 IN OUT LPDWORD BugSize,
405 IN OUT LPWSASERVICECLASSINFOW lpServiceClassInfo);
406
407 PNSCATALOG_ENTRY
408 WSAAPI
409 WsNcEntryAllocate(VOID);
410
411 INT
412 WSAAPI
413 WsNcEntryInitializeFromRegistry(IN PNSCATALOG_ENTRY CatalogEntry,
414 IN HKEY ParentKey,
415 IN ULONG UniqueId);
416
417 VOID
418 WSAAPI
419 WsNcEntryDereference(IN PNSCATALOG_ENTRY CatalogEntry);
420
421 VOID
422 WSAAPI
423 WsNcEntrySetProvider(IN PNSCATALOG_ENTRY Entry,
424 IN PNS_PROVIDER Provider);
425
426 DWORD
427 WSAAPI
428 WsNqAddProvider(
429 IN PNSQUERY NsQuery,
430 IN PNS_PROVIDER Provider
431 );
432
433 PNSQUERY
434 WSAAPI
435 WsNqAllocate(VOID);
436
437 BOOL
438 WSAAPI
439 WsNqBeginEnumerationProc(
440 PVOID Context,
441 PNSCATALOG_ENTRY CatalogEntry
442 );
443
444 VOID
445 WSAAPI
446 WsNqDelete(IN PNSQUERY NsQuery);
447
448 DWORD
449 WSAAPI
450 WsNqInitialize(IN PNSQUERY NsQuery);
451
452 DWORD
453 WSAAPI
454 WsNqLookupServiceBegin(
455 IN PNSQUERY NsQuery,
456 IN LPWSAQUERYSETW QuerySet,
457 IN DWORD ControlFlags,
458 IN PNSCATALOG Catalog
459 );
460
461 DWORD
462 WSAAPI
463 WsNqLookupServiceEnd(IN PNSQUERY NsQuery);
464
465 DWORD
466 WSAAPI
467 WsNqLookupServiceNext(
468 PNSQUERY NsQuery,
469 DWORD,
470 PDWORD,
471 OUT LPWSAQUERYSETW QuerySet
472 );
473
474 PNSQUERY_PROVIDER
475 WSAAPI
476 WsNqNextProvider(
477 PNSQUERY NsQuery,
478 IN PNSQUERY_PROVIDER Provider
479 );
480
481 VOID
482 WSAAPI
483 WsNqDereference(IN PNSQUERY Query);
484
485 BOOL
486 WSAAPI
487 WsNqValidateAndReference(IN PNSQUERY Query);
488
489 PNSQUERY_PROVIDER
490 WSAAPI
491 WsNqPreviousProvider(IN PNSQUERY Query,
492 IN PNSQUERY_PROVIDER Provider);
493
494 DWORD
495 WSAAPI
496 WsNqProvLookupServiceNext(
497 IN PNSQUERY_PROVIDER QueryProvider,
498 DWORD,
499 PDWORD ,
500 LPWSAQUERYSETW QuerySet
501 );
502
503 DWORD
504 WSAAPI
505 WsNqProvLookupServiceEnd(IN PNSQUERY_PROVIDER QueryProvider);
506
507 DWORD
508 WSAAPI
509 WsNqProvInitialize(
510 IN PNSQUERY_PROVIDER QueryProvider,
511 IN PNS_PROVIDER Provider
512 );
513
514 PNSQUERY_PROVIDER
515 WSAAPI
516 WsNqProvAllocate(VOID);
517
518 VOID
519 WSAAPI
520 WsNqProvDelete(IN PNSQUERY_PROVIDER QueryProvider);
521
522 DWORD
523 WSAAPI
524 WsNqProvLookupServiceBegin(
525 IN PNSQUERY_PROVIDER QueryProvider,
526 IN LPWSAQUERYSETW QuerySet,
527 IN LPWSASERVICECLASSINFOW ServiceClassInfo,
528 IN DWORD
529 );
530
531 VOID
532 WSAAPI
533 WsNpDelete(IN PNS_PROVIDER Provider);
534
535 DWORD
536 WSAAPI
537 WsNpLookupServiceBegin (
538 IN PNS_PROVIDER Provider,
539 IN LPWSAQUERYSETW Restrictions,
540 struct _WSAServiceClassInfoW *,
541 IN DWORD ControlFlags,
542 OUT PHANDLE LookupHandle
543 );
544
545 DWORD
546 WSAAPI
547 WsNpNSPCleanup(IN PNS_PROVIDER Provider);
548
549 DWORD
550 WSAAPI
551 WsNpLookupServiceEnd(
552 IN PNS_PROVIDER Provider,
553 IN HANDLE LookupHandle
554 );
555
556 DWORD
557 WSAAPI
558 WsNpInitialize(
559 IN PNS_PROVIDER Provider,
560 IN LPWSTR DllPath,
561 IN LPGUID ProviderGuid
562 );
563
564 PNS_PROVIDER
565 WSAAPI
566 WsNpAllocate(VOID);
567
568 VOID
569 WSAAPI
570 WsNpDereference(IN PNS_PROVIDER Provider);
571
572 DWORD
573 WSAAPI
574 WsNpLookupServiceNext(
575 IN PNS_PROVIDER Provider,
576 IN HANDLE LookupHandle,
577 IN DWORD ControlFlags,
578 OUT PDWORD BufferLength,
579 OUT LPWSAQUERYSETW Results
580 );
581
582 VOID
583 WSAAPI
584 WsTpDelete(IN PTPROVIDER Provider);
585
586 DWORD
587 WSAAPI
588 WsTpWSPCleanup(
589 IN PTPROVIDER Provider,
590 int *
591 );
592
593 PTPROVIDER
594 WSAAPI
595 WsTpAllocate(VOID);
596
597 DWORD
598 WSAAPI
599 WsTpInitialize(
600 IN PTPROVIDER Provider,
601 IN LPSTR DllName,
602 LPWSAPROTOCOL_INFOW ProtocolInfo
603 );
604
605 VOID
606 WSAAPI
607 WsTpDereference(IN PTPROVIDER Provider);
608
609 VOID
610 WSAAPI
611 WsThreadDelete(IN PWSTHREAD Thread);
612
613 VOID
614 WSAAPI
615 WsThreadDestroyCurrentThread(VOID);
616
617 DWORD
618 WSAAPI
619 WsThreadCreate(
620 IN PWSPROCESS Process,
621 IN PWSTHREAD *Thread
622 );
623
624 DWORD
625 WSAAPI
626 WsThreadGetCurrentThread(
627 IN PWSPROCESS Process,
628 IN PWSTHREAD *Thread
629 );
630
631 LPWSATHREADID
632 WSAAPI
633 WsThreadGetThreadId(IN PWSPROCESS Process);
634
635 DWORD
636 WSAAPI
637 WsThreadStartup(VOID);
638
639 VOID
640 WSAAPI
641 WsThreadCleanup(VOID);
642
643 DWORD
644 WSAAPI
645 WsThreadCancelBlockingCall(IN PWSTHREAD Thread);
646
647 DWORD
648 WSAAPI
649 WsThreadUnhookBlockingHook(IN PWSTHREAD Thread);
650
651 FARPROC
652 WSAAPI
653 WsThreadSetBlockingHook(IN PWSTHREAD Thread,
654 IN FARPROC BlockingHook);
655
656
657 PHOSTENT
658 WSAAPI
659 WsThreadBlobToHostent(IN PWSTHREAD Thread,
660 IN LPBLOB Blob);
661
662 PSERVENT
663 WSAAPI
664 WsThreadBlobToServent(IN PWSTHREAD Thread,
665 IN LPBLOB Blob);
666
667 PWSPROTO_BUFFER
668 WSAAPI
669 WsThreadGetProtoBuffer(IN PWSTHREAD Thread);
670
671 PWSTHREAD
672 WSAAPI
673 WsThreadAllocate(VOID);
674
675 DWORD
676 WSAAPI
677 WsThreadDefaultBlockingHook(VOID);
678
679 DWORD
680 WSAAPI
681 WsThreadInitialize(
682 IN PWSTHREAD Thread,
683 IN PWSPROCESS Process
684 );
685
686 DWORD
687 WSAAPI
688 WsTcFindIfsProviderForSocket(IN PTCATALOG TCatalog, SOCKET Socket);
689
690 DWORD
691 WSAAPI
692 WsTcEntryInitializeFromRegistry(IN PTCATALOG_ENTRY CatalogEntry, IN HKEY, unsigned long);
693
694 DWORD
695 WSAAPI
696 WsTcGetEntryFromAf(IN PTCATALOG TCatalog, IN INT AddressFamily, IN PTCATALOG_ENTRY *CatalogEntry);
697
698 PTCATALOG_ENTRY
699 WSAAPI
700 WsTcEntryAllocate(VOID);
701
702 VOID
703 WSAAPI
704 WsTcEntrySetProvider(IN PTCATALOG_ENTRY CatalogEntry, IN PTPROVIDER Provider);
705
706 DWORD
707 WSAAPI
708 WsTcRefreshFromRegistry(IN PTCATALOG TCatalog, PVOID);
709
710 BOOL
711 WSAAPI
712 WsTcOpen(IN PTCATALOG TCatalog, IN HKEY);
713
714 PTPROVIDER
715 WSAAPI
716 WsTcFindProvider(IN PTCATALOG TCatalog, IN LPGUID ProviderId);
717
718 VOID
719 WSAAPI
720 WsTcEnumerateCatalogItems(IN PTCATALOG Catalog,
721 IN PTCATALOG_ENUMERATE_PROC Callback,
722 IN PVOID Context);
723
724 VOID
725 WSAAPI
726 WsTcEntryDereference(IN PTCATALOG_ENTRY CatalogEntry);
727
728 PTCATALOG
729 WSAAPI
730 WsTcAllocate(VOID);
731
732 VOID
733 WSAAPI
734 WsTcDelete(IN PTCATALOG Catalog);
735
736 DWORD
737 WSAAPI
738 WsTcGetEntryFromTriplet(IN PTCATALOG TCatalog, IN INT AddressFamily, IN INT SocketType, IN INT Protocol, IN DWORD StartId, IN PTCATALOG_ENTRY *CatalogEntry);
739
740 VOID
741 WSAAPI
742 WsTcUpdateProtocolList(IN PTCATALOG TCatalog, PLIST_ENTRY ProtocolList);
743
744 VOID
745 WSAAPI
746 WsTcEntryDelete(IN PTCATALOG_ENTRY CatalogEntry);
747
748 DWORD
749 WSAAPI
750 WsTcGetEntryFromCatalogEntryId(IN PTCATALOG TCatalog, IN DWORD CatalogEntryId, IN PTCATALOG_ENTRY *CatalogEntry);
751
752 DWORD
753 WSAAPI
754 WsTcLoadProvider(IN PTCATALOG TCatalog, IN PTCATALOG_ENTRY CatalogEntry);
755
756 DWORD
757 WSAAPI
758 WsTcInitializeFromRegistry(IN PTCATALOG TCatalog, HKEY, PVOID);
759
760 INT
761 WSAAPI
762 WsSockStartup(VOID);
763
764 VOID
765 WSAAPI
766 WsSockCleanup(VOID);
767
768 BOOL
769 WSAAPI
770 WsSockDeleteSockets(IN LPVOID Context,
771 IN PWAH_HANDLE Handle);
772
773 VOID
774 WSAAPI
775 WsSockDereference(IN PWSSOCKET Socket);
776
777 PWSSOCKET
778 WSAAPI
779 WsSockAllocate(VOID);
780
781 INT
782 WSAAPI
783 WsSockInitialize(IN PWSSOCKET Socket,
784 IN PTCATALOG_ENTRY CatalogEntry);
785
786 INT
787 WSAAPI
788 WsSockAssociateHandle(IN PWSSOCKET Socket,
789 IN SOCKET Handle,
790 IN BOOLEAN IsProvider);
791
792 INT
793 WSAAPI
794 WsSockDisassociateHandle(IN PWSSOCKET Socket);
795
796 INT
797 WSAAPI
798 WsSockAddApiReference(IN SOCKET Handle);
799
800 PTCATALOG
801 WSAAPI
802 WsProcGetTCatalog(IN PWSPROCESS Process);
803
804 BOOL
805 WSAAPI
806 WsProcDetachSocket(IN PWSPROCESS Process,
807 IN PWAH_HANDLE Handle);
808
809 INT
810 WSAAPI
811 WsProcGetAsyncHelper(IN PWSPROCESS Process,
812 OUT PHANDLE Handle);
813
814 VOID
815 WSAAPI
816 WsProcDelete(IN PWSPROCESS Process);
817
818 INT
819 WSAAPI
820 WsProcStartup(VOID);
821
822 PNSCATALOG
823 WSAAPI
824 WsProcGetNsCatalog(IN PWSPROCESS Process);
825
826 VOID
827 WSAAPI
828 WsProcSetVersion(IN PWSPROCESS Process,
829 IN WORD VersionRequested);
830
831 VOID
832 WSAAPI
833 WsAsyncQueueRequest(IN PWSASYNCBLOCK AsyncBlock);
834
835 BOOL
836 WSAAPI
837 WsAsyncCheckAndInitThread(VOID);
838
839 INT
840 WSAAPI
841 WsAsyncCancelRequest(IN HANDLE TaskHandle);
842
843 PWSASYNCBLOCK
844 WSAAPI
845 WsAsyncAllocateBlock(IN SIZE_T ExtraLength);
846
847 VOID
848 WSAAPI
849 WsAsyncTerminateThread(VOID);
850
851 VOID
852 WSAAPI
853 WsAsyncGlobalTerminate(VOID);
854
855 VOID
856 WSAAPI
857 WsAsyncGlobalInitialize(VOID);
858
859 FORCEINLINE
860 PWSPROCESS
861 WsGetProcess()
862 {
863 return CurrentWsProcess;
864 }
865
866 FORCEINLINE
867 DWORD
868 WsQuickProlog()
869 {
870 /* Try to see if we're initialized. If not, do the full prolog */
871 return WsGetProcess() ? ERROR_SUCCESS : WsSlowProlog();
872 }
873
874 FORCEINLINE
875 DWORD
876 WsQuickPrologTid(LPWSATHREADID *Tid)
877 {
878 /* Try to see if we're initialized. If not, do the full prolog */
879 if ((WsGetProcess()) && (*Tid = WsThreadGetThreadId(WsGetProcess())))
880 {
881 return ERROR_SUCCESS;
882 }
883 else
884 {
885 return WsSlowPrologTid(Tid);
886 }
887 }