:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / lib / ws2_32 / include / catalog.h
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS WinSock 2 DLL
4  * FILE:        include/catalog.h
5  * PURPOSE:     Service Provider Catalog definitions
6  */
7 #ifndef __CATALOG_H
8 #define __CATALOG_H
9
10 #include <ws2_32.h>
11 #include <wsahelp.h>
12
13 typedef struct _CATALOG_ENTRY {
14     LIST_ENTRY ListEntry;
15     ULONG ReferenceCount;
16     CRITICAL_SECTION Lock;
17     UNICODE_STRING LibraryName;
18     HMODULE hModule;
19     WSAPROTOCOL_INFOW ProtocolInfo;
20     PWINSOCK_MAPPING Mapping;
21     LPWSPSTARTUP WSPStartup;
22     WSPDATA WSPData;
23     WSPPROC_TABLE ProcTable;
24 } CATALOG_ENTRY, *PCATALOG_ENTRY;
25
26 extern LIST_ENTRY Catalog;
27
28
29 VOID ReferenceProviderByPointer(
30     PCATALOG_ENTRY Provider);
31
32 VOID DereferenceProviderByPointer(
33     PCATALOG_ENTRY Provider);
34
35 PCATALOG_ENTRY CreateCatalogEntry(
36     LPWSTR LibraryName);
37
38 INT DestroyCatalogEntry(
39     PCATALOG_ENTRY Provider);
40
41 PCATALOG_ENTRY LocateProvider(
42     LPWSAPROTOCOL_INFOW lpProtocolInfo);
43
44 PCATALOG_ENTRY LocateProviderById(
45     DWORD CatalogEntryId);
46
47 INT LoadProvider(
48     PCATALOG_ENTRY Provider,
49     LPWSAPROTOCOL_INFOW lpProtocolInfo);
50
51 INT UnloadProvider(
52     PCATALOG_ENTRY Provider);
53
54 VOID CreateCatalog(VOID);
55
56 VOID DestroyCatalog(VOID);
57
58 #endif /* __CATALOG_H */
59
60 /* EOF */