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