:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / lib / ws2_32 / include / handle.h
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS WinSock 2 DLL
4  * FILE:        include/handle.h
5  * PURPOSE:     Provider handle definitions
6  */
7 #ifndef __HANDLE_H
8 #define __HANDLE_H
9
10 #include <ws2_32.h>
11 #include <catalog.h>
12
13 typedef struct _PROVIDER_HANDLE {
14     HANDLE Handle;
15     PCATALOG_ENTRY Provider;
16 } PROVIDER_HANDLE, *PPROVIDER_HANDLE;
17
18 #define HANDLE_BLOCK_ENTRIES ((1024-sizeof(LIST_ENTRY))/sizeof(PROVIDER_HANDLE))
19
20 typedef struct _PROVIDER_HANDLE_BLOCK {
21     LIST_ENTRY Entry;
22     PROVIDER_HANDLE Handles[HANDLE_BLOCK_ENTRIES];
23 } PROVIDER_HANDLE_BLOCK, *PPROVIDER_HANDLE_BLOCK;
24
25 extern PPROVIDER_HANDLE_BLOCK ProviderHandleTable;
26
27
28 HANDLE
29 CreateProviderHandle(HANDLE Handle,
30                      PCATALOG_ENTRY Provider);
31
32 BOOL
33 ReferenceProviderByHandle(HANDLE Handle,
34                           PCATALOG_ENTRY* Provider);
35
36 BOOL
37 CloseProviderHandle(HANDLE Handle);
38
39 BOOL
40 InitProviderHandleTable(VOID);
41
42 VOID
43 FreeProviderHandleTable(VOID);
44
45 #endif /* __HANDLE_H */
46
47 /* EOF */