1 /* 2 * COPYRIGHT: See COPYING in the top level directory 3 * PROJECT: ReactOS WinSock 2.2 Library 4 * FILE: dll/win32/ws2_32/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 _PROVIDER_ENUM_CONTEXT 236 { 237 GUID ProviderId; 238 LPWSTR ProviderDllPath; 239 INT ProviderDllPathLen; 240 DWORD FoundPathLen; 241 DWORD Found; 242 INT ErrorCode; 243 } PROVIDER_ENUM_CONTEXT, *PPROVIDER_ENUM_CONTEXT; 244 245 typedef struct _WS_BUFFER 246 { 247 ULONG_PTR Position; 248 SIZE_T MaxSize; 249 SIZE_T BytesUsed; 250 } WS_BUFFER, *PWS_BUFFER; 251 252 typedef BOOL 253 (WINAPI *PNSCATALOG_ENUMERATE_PROC)( 254 IN PVOID Context, 255 IN PNSCATALOG_ENTRY Entry 256 ); 257 258 typedef BOOL 259 (WINAPI *PTCATALOG_ENUMERATE_PROC)( 260 IN PVOID Context, 261 IN PTCATALOG_ENTRY Entry 262 ); 263 264 typedef BOOL 265 (WINAPI *PWS_SOCK_POST_ROUTINE)( 266 IN HWND hWnd, 267 IN UINT wMsg, 268 IN WPARAM wParam, 269 IN LPARAM lParam 270 ); 271 272 extern HINSTANCE WsDllHandle; 273 extern HANDLE WsSockHeap; 274 extern PWAH_HANDLE_TABLE WsSockHandleTable; 275 extern PWSPROCESS CurrentWsProcess; 276 extern DWORD GlobalTlsIndex; 277 #define TlsIndex GlobalTlsIndex 278 extern BOOLEAN WsAsyncThreadInitialized; 279 extern PWS_SOCK_POST_ROUTINE WsSockPostRoutine; 280 281 LPSTR 282 WSAAPI 283 AnsiDupFromUnicode(IN LPCWSTR UnicodeString); 284 285 LPWSTR 286 WSAAPI 287 UnicodeDupFromAnsi(IN LPCSTR AnsiString); 288 289 VOID 290 WSAAPI 291 WsRasInitializeAutodial(VOID); 292 293 VOID 294 WSAAPI 295 WsRasUninitializeAutodial(VOID); 296 297 BOOL 298 WSAAPI 299 WSAttemptAutodialName(IN CONST LPWSAQUERYSETW lpqsRestrictions); 300 301 BOOL 302 WSAAPI 303 WSAttemptAutodialAddr( 304 IN CONST SOCKADDR FAR *Name, 305 IN INT NameLength 306 ); 307 308 VOID 309 WSAAPI 310 WSNoteSuccessfulHostentLookup( 311 IN CONST CHAR FAR *Name, 312 IN CONST ULONG Address 313 ); 314 315 INT 316 WSAAPI 317 MapUnicodeProtocolInfoToAnsi(IN LPWSAPROTOCOL_INFOW UnicodeInfo, 318 OUT LPWSAPROTOCOL_INFOA AnsiInfo); 319 320 INT 321 WSAAPI 322 MapAnsiQuerySetToUnicode(IN LPWSAQUERYSETA AnsiSet, 323 IN OUT PSIZE_T SetSize, 324 OUT LPWSAQUERYSETW UnicodeSet); 325 326 INT 327 WSAAPI 328 MapUnicodeQuerySetToAnsi(IN LPWSAQUERYSETW UnicodeSet, 329 IN OUT PSIZE_T SetSize, 330 OUT LPWSAQUERYSETA AnsiSet); 331 332 INT 333 WSAAPI 334 CopyQuerySetW(IN LPWSAQUERYSETW UnicodeSet, 335 OUT LPWSAQUERYSETW *UnicodeCopy); 336 337 INT 338 WSAAPI 339 WsSlowProlog(VOID); 340 341 INT 342 WSAAPI 343 WsSlowPrologTid(OUT LPWSATHREADID *ThreadId); 344 345 PWSSOCKET 346 WSAAPI 347 WsSockGetSocket(IN SOCKET Handle); 348 349 INT 350 WSAAPI 351 WsApiProlog(OUT PWSPROCESS *Process, 352 OUT PWSTHREAD *Thread); 353 354 HKEY 355 WSAAPI 356 WsOpenRegistryRoot(VOID); 357 358 VOID 359 WSAAPI 360 WsCreateStartupSynchronization(VOID); 361 362 VOID 363 WSAAPI 364 WsDestroyStartupSynchronization(VOID); 365 366 INT 367 WSAAPI 368 WsSetupCatalogProtection(IN HKEY CatalogKey, 369 IN HANDLE CatalogEvent, 370 OUT LPDWORD UniqueId); 371 372 BOOL 373 WSAAPI 374 WsCheckCatalogState(IN HANDLE Event); 375 376 PNSCATALOG 377 WSAAPI 378 WsNcAllocate(VOID); 379 380 VOID 381 WSAAPI 382 WsNcDelete(IN PNSCATALOG Catalog); 383 384 INT 385 WSAAPI 386 WsNcInitializeFromRegistry(IN PNSCATALOG Catalog, 387 IN HKEY ParentKey, 388 IN HANDLE CatalogEvent); 389 390 INT 391 WSAAPI 392 WsNcRefreshFromRegistry(IN PNSCATALOG Catalog, 393 IN HANDLE CatalogEvent); 394 395 VOID 396 WSAAPI 397 WsNcUpdateNamespaceList(IN PNSCATALOG Catalog, 398 IN PLIST_ENTRY List); 399 400 BOOL 401 WSAAPI 402 WsNcMatchProtocols(IN DWORD NameSpace, 403 IN LONG AddressFamily, 404 IN LPWSAQUERYSETW QuerySet); 405 406 INT 407 WSAAPI 408 WsNcLoadProvider(IN PNSCATALOG Catalog, 409 IN PNSCATALOG_ENTRY CatalogEntry); 410 411 INT 412 WSAAPI 413 WsNcGetCatalogFromProviderId(IN PNSCATALOG Catalog, 414 IN LPGUID ProviderId, 415 OUT PNSCATALOG_ENTRY *CatalogEntry); 416 417 VOID 418 WSAAPI 419 WsNcEnumerateCatalogItems(IN PNSCATALOG Catalog, 420 IN PNSCATALOG_ENUMERATE_PROC Callback, 421 IN PVOID Context); 422 423 INT 424 WSAAPI 425 WsNcGetServiceClassInfo(IN PNSCATALOG Catalog, 426 IN OUT LPDWORD BugSize, 427 IN OUT LPWSASERVICECLASSINFOW lpServiceClassInfo); 428 429 PNSCATALOG_ENTRY 430 WSAAPI 431 WsNcEntryAllocate(VOID); 432 433 INT 434 WSAAPI 435 WsNcEntryInitializeFromRegistry(IN PNSCATALOG_ENTRY CatalogEntry, 436 IN HKEY ParentKey, 437 IN ULONG UniqueId); 438 439 VOID 440 WSAAPI 441 WsNcEntryDereference(IN PNSCATALOG_ENTRY CatalogEntry); 442 443 VOID 444 WSAAPI 445 WsNcEntrySetProvider(IN PNSCATALOG_ENTRY Entry, 446 IN PNS_PROVIDER Provider); 447 448 BOOL 449 WSAAPI 450 WsNqAddProvider( 451 IN PNSQUERY NsQuery, 452 IN PNS_PROVIDER Provider 453 ); 454 455 PNSQUERY 456 WSAAPI 457 WsNqAllocate(VOID); 458 459 BOOL 460 WSAAPI 461 WsNqBeginEnumerationProc( 462 PVOID Context, 463 PNSCATALOG_ENTRY CatalogEntry 464 ); 465 466 VOID 467 WSAAPI 468 WsNqDelete(IN PNSQUERY NsQuery); 469 470 DWORD 471 WSAAPI 472 WsNqInitialize(IN PNSQUERY NsQuery); 473 474 DWORD 475 WSAAPI 476 WsNqLookupServiceBegin( 477 IN PNSQUERY NsQuery, 478 IN LPWSAQUERYSETW QuerySet, 479 IN DWORD ControlFlags, 480 IN PNSCATALOG Catalog 481 ); 482 483 DWORD 484 WSAAPI 485 WsNqLookupServiceEnd(IN PNSQUERY NsQuery); 486 487 DWORD 488 WSAAPI 489 WsNqLookupServiceNext( 490 PNSQUERY NsQuery, 491 DWORD, 492 PDWORD, 493 OUT LPWSAQUERYSETW QuerySet 494 ); 495 496 PNSQUERY_PROVIDER 497 WSAAPI 498 WsNqNextProvider( 499 PNSQUERY NsQuery, 500 IN PNSQUERY_PROVIDER Provider 501 ); 502 503 PNSQUERY_PROVIDER 504 WSAAPI 505 WsNqPreviousProvider( 506 IN PNSQUERY Query, 507 IN PNSQUERY_PROVIDER Provider 508 ); 509 510 VOID 511 WSAAPI 512 WsNqDereference(IN PNSQUERY Query); 513 514 BOOL 515 WSAAPI 516 WsNqValidateAndReference(IN PNSQUERY Query); 517 518 DWORD 519 WSAAPI 520 WsNqProvLookupServiceNext( 521 IN PNSQUERY_PROVIDER QueryProvider, 522 DWORD, 523 PDWORD , 524 LPWSAQUERYSETW QuerySet 525 ); 526 527 DWORD 528 WSAAPI 529 WsNqProvLookupServiceEnd(IN PNSQUERY_PROVIDER QueryProvider); 530 531 DWORD 532 WSAAPI 533 WsNqProvInitialize( 534 IN PNSQUERY_PROVIDER QueryProvider, 535 IN PNS_PROVIDER Provider 536 ); 537 538 PNSQUERY_PROVIDER 539 WSAAPI 540 WsNqProvAllocate(VOID); 541 542 VOID 543 WSAAPI 544 WsNqProvDelete(IN PNSQUERY_PROVIDER QueryProvider); 545 546 DWORD 547 WSAAPI 548 WsNqProvLookupServiceBegin( 549 IN PNSQUERY_PROVIDER QueryProvider, 550 IN LPWSAQUERYSETW QuerySet, 551 IN LPWSASERVICECLASSINFOW ServiceClassInfo, 552 IN DWORD 553 ); 554 555 VOID 556 WSAAPI 557 WsNpDelete(IN PNS_PROVIDER Provider); 558 559 DWORD 560 WSAAPI 561 WsNpLookupServiceBegin ( 562 IN PNS_PROVIDER Provider, 563 IN LPWSAQUERYSETW Restrictions, 564 struct _WSAServiceClassInfoW *, 565 IN DWORD ControlFlags, 566 OUT PHANDLE LookupHandle 567 ); 568 569 DWORD 570 WSAAPI 571 WsNpNSPCleanup(IN PNS_PROVIDER Provider); 572 573 DWORD 574 WSAAPI 575 WsNpLookupServiceEnd( 576 IN PNS_PROVIDER Provider, 577 IN HANDLE LookupHandle 578 ); 579 580 DWORD 581 WSAAPI 582 WsNpInitialize( 583 IN PNS_PROVIDER Provider, 584 IN LPWSTR DllPath, 585 IN LPGUID ProviderGuid 586 ); 587 588 PNS_PROVIDER 589 WSAAPI 590 WsNpAllocate(VOID); 591 592 VOID 593 WSAAPI 594 WsNpDereference(IN PNS_PROVIDER Provider); 595 596 DWORD 597 WSAAPI 598 WsNpLookupServiceNext( 599 IN PNS_PROVIDER Provider, 600 IN HANDLE LookupHandle, 601 IN DWORD ControlFlags, 602 OUT PDWORD BufferLength, 603 OUT LPWSAQUERYSETW Results 604 ); 605 606 VOID 607 WSAAPI 608 WsTpDelete(IN PTPROVIDER Provider); 609 610 DWORD 611 WSAAPI 612 WsTpWSPCleanup( 613 IN PTPROVIDER Provider, 614 int * 615 ); 616 617 PTPROVIDER 618 WSAAPI 619 WsTpAllocate(VOID); 620 621 DWORD 622 WSAAPI 623 WsTpInitialize( 624 IN PTPROVIDER Provider, 625 IN LPSTR DllName, 626 LPWSAPROTOCOL_INFOW ProtocolInfo 627 ); 628 629 VOID 630 WSAAPI 631 WsTpDereference(IN PTPROVIDER Provider); 632 633 VOID 634 WSAAPI 635 WsThreadDelete(IN PWSTHREAD Thread); 636 637 VOID 638 WSAAPI 639 WsThreadDestroyCurrentThread(VOID); 640 641 DWORD 642 WSAAPI 643 WsThreadCreate( 644 IN PWSPROCESS Process, 645 IN PWSTHREAD *Thread 646 ); 647 648 DWORD 649 WSAAPI 650 WsThreadGetCurrentThread( 651 IN PWSPROCESS Process, 652 IN PWSTHREAD *Thread 653 ); 654 655 LPWSATHREADID 656 WSAAPI 657 WsThreadGetThreadId(IN PWSPROCESS Process); 658 659 DWORD 660 WSAAPI 661 WsThreadStartup(VOID); 662 663 VOID 664 WSAAPI 665 WsThreadCleanup(VOID); 666 667 DWORD 668 WSAAPI 669 WsThreadCancelBlockingCall(IN PWSTHREAD Thread); 670 671 DWORD 672 WSAAPI 673 WsThreadUnhookBlockingHook(IN PWSTHREAD Thread); 674 675 FARPROC 676 WSAAPI 677 WsThreadSetBlockingHook(IN PWSTHREAD Thread, 678 IN FARPROC BlockingHook); 679 680 681 PHOSTENT 682 WSAAPI 683 WsThreadBlobToHostent(IN PWSTHREAD Thread, 684 IN LPBLOB Blob); 685 686 PSERVENT 687 WSAAPI 688 WsThreadBlobToServent(IN PWSTHREAD Thread, 689 IN LPBLOB Blob); 690 691 PWSPROTO_BUFFER 692 WSAAPI 693 WsThreadGetProtoBuffer(IN PWSTHREAD Thread); 694 695 PWSTHREAD 696 WSAAPI 697 WsThreadAllocate(VOID); 698 699 DWORD 700 WSAAPI 701 WsThreadDefaultBlockingHook(VOID); 702 703 DWORD 704 WSAAPI 705 WsThreadInitialize( 706 IN PWSTHREAD Thread, 707 IN PWSPROCESS Process 708 ); 709 710 DWORD 711 WSAAPI 712 WsTcFindIfsProviderForSocket(IN PTCATALOG TCatalog, SOCKET Socket); 713 714 DWORD 715 WSAAPI 716 WsTcEntryInitializeFromRegistry(IN PTCATALOG_ENTRY CatalogEntry, IN HKEY, unsigned long); 717 718 DWORD 719 WSAAPI 720 WsTcGetEntryFromAf(IN PTCATALOG TCatalog, IN INT AddressFamily, IN PTCATALOG_ENTRY *CatalogEntry); 721 722 PTCATALOG_ENTRY 723 WSAAPI 724 WsTcEntryAllocate(VOID); 725 726 VOID 727 WSAAPI 728 WsTcEntrySetProvider(IN PTCATALOG_ENTRY CatalogEntry, IN PTPROVIDER Provider); 729 730 DWORD 731 WSAAPI 732 WsTcRefreshFromRegistry(IN PTCATALOG TCatalog, PVOID); 733 734 BOOL 735 WSAAPI 736 WsTcOpen(IN PTCATALOG TCatalog, IN HKEY); 737 738 PTPROVIDER 739 WSAAPI 740 WsTcFindProvider(IN PTCATALOG TCatalog, IN LPGUID ProviderId); 741 742 VOID 743 WSAAPI 744 WsTcEnumerateCatalogItems(IN PTCATALOG Catalog, 745 IN PTCATALOG_ENUMERATE_PROC Callback, 746 IN PVOID Context); 747 748 VOID 749 WSAAPI 750 WsTcEntryDereference(IN PTCATALOG_ENTRY CatalogEntry); 751 752 PTCATALOG 753 WSAAPI 754 WsTcAllocate(VOID); 755 756 VOID 757 WSAAPI 758 WsTcDelete(IN PTCATALOG Catalog); 759 760 DWORD 761 WSAAPI 762 WsTcGetEntryFromTriplet(IN PTCATALOG TCatalog, IN INT AddressFamily, IN INT SocketType, IN INT Protocol, IN DWORD StartId, IN PTCATALOG_ENTRY *CatalogEntry); 763 764 VOID 765 WSAAPI 766 WsTcUpdateProtocolList(IN PTCATALOG TCatalog, PLIST_ENTRY ProtocolList); 767 768 VOID 769 WSAAPI 770 WsTcEntryDelete(IN PTCATALOG_ENTRY CatalogEntry); 771 772 DWORD 773 WSAAPI 774 WsTcGetEntryFromCatalogEntryId(IN PTCATALOG TCatalog, IN DWORD CatalogEntryId, IN PTCATALOG_ENTRY *CatalogEntry); 775 776 DWORD 777 WSAAPI 778 WsTcLoadProvider(IN PTCATALOG TCatalog, IN PTCATALOG_ENTRY CatalogEntry); 779 780 DWORD 781 WSAAPI 782 WsTcInitializeFromRegistry(IN PTCATALOG TCatalog, HKEY, PVOID); 783 784 INT 785 WSAAPI 786 WsSockStartup(VOID); 787 788 VOID 789 WSAAPI 790 WsSockCleanup(VOID); 791 792 BOOL 793 WSAAPI 794 WsSockDeleteSockets(IN LPVOID Context, 795 IN PWAH_HANDLE Handle); 796 797 VOID 798 WSAAPI 799 WsSockDereference(IN PWSSOCKET Socket); 800 801 PWSSOCKET 802 WSAAPI 803 WsSockAllocate(VOID); 804 805 INT 806 WSAAPI 807 WsSockInitialize(IN PWSSOCKET Socket, 808 IN PTCATALOG_ENTRY CatalogEntry); 809 810 INT 811 WSAAPI 812 WsSockAssociateHandle(IN PWSSOCKET Socket, 813 IN SOCKET Handle, 814 IN BOOLEAN IsProvider); 815 816 INT 817 WSAAPI 818 WsSockDisassociateHandle(IN PWSSOCKET Socket); 819 820 INT 821 WSAAPI 822 WsSockAddApiReference(IN SOCKET Handle); 823 824 PTCATALOG 825 WSAAPI 826 WsProcGetTCatalog(IN PWSPROCESS Process); 827 828 BOOL 829 WSAAPI 830 WsProcDetachSocket(IN PWSPROCESS Process, 831 IN PWAH_HANDLE Handle); 832 833 INT 834 WSAAPI 835 WsProcGetAsyncHelper(IN PWSPROCESS Process, 836 OUT PHANDLE Handle); 837 838 VOID 839 WSAAPI 840 WsProcDelete(IN PWSPROCESS Process); 841 842 INT 843 WSAAPI 844 WsProcStartup(VOID); 845 846 PNSCATALOG 847 WSAAPI 848 WsProcGetNsCatalog(IN PWSPROCESS Process); 849 850 VOID 851 WSAAPI 852 WsProcSetVersion(IN PWSPROCESS Process, 853 IN WORD VersionRequested); 854 855 VOID 856 WSAAPI 857 WsAsyncQueueRequest(IN PWSASYNCBLOCK AsyncBlock); 858 859 BOOL 860 WSAAPI 861 WsAsyncCheckAndInitThread(VOID); 862 863 INT 864 WSAAPI 865 WsAsyncCancelRequest(IN HANDLE TaskHandle); 866 867 PWSASYNCBLOCK 868 WSAAPI 869 WsAsyncAllocateBlock(IN SIZE_T ExtraLength); 870 871 VOID 872 WSAAPI 873 WsAsyncTerminateThread(VOID); 874 875 VOID 876 WSAAPI 877 WsAsyncGlobalTerminate(VOID); 878 879 VOID 880 WSAAPI 881 WsAsyncGlobalInitialize(VOID); 882 883 FORCEINLINE 884 PWSPROCESS 885 WsGetProcess(VOID) 886 { 887 return CurrentWsProcess; 888 } 889 890 FORCEINLINE 891 DWORD 892 WsQuickProlog(VOID) 893 { 894 /* Try to see if we're initialized. If not, do the full prolog */ 895 return WsGetProcess() ? ERROR_SUCCESS : WsSlowProlog(); 896 } 897 898 FORCEINLINE 899 DWORD 900 WsQuickPrologTid(LPWSATHREADID *Tid) 901 { 902 /* Try to see if we're initialized. If not, do the full prolog */ 903 if ((WsGetProcess()) && (*Tid = WsThreadGetThreadId(WsGetProcess()))) 904 { 905 return ERROR_SUCCESS; 906 } 907 else 908 { 909 return WsSlowPrologTid(Tid); 910 } 911 } 912