:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / ntoskrnl / include / internal / handle.h
1 #ifndef __INTERNAL_HANDLE_H
2 #define __INTERNAL_HANDLE_H
3
4
5 typedef struct _RTL_HANDLE
6 {
7    struct _RTL_HANDLE *Next;    /* pointer to next free handle */
8    PVOID Object;                /* pointer to object */
9 } RTL_HANDLE, *PRTL_HANDLE;
10
11 typedef struct _RTL_HANDLE_TABLE
12 {
13    ULONG TableSize;             /* maximum number of handles */
14    PRTL_HANDLE Handles;         /* pointer to handle array */
15    PRTL_HANDLE Limit;           /* limit of pointers */
16    PRTL_HANDLE FirstFree;       /* pointer to first free handle */
17    PRTL_HANDLE LastUsed;        /* pointer to last allocated handle */
18 } RTL_HANDLE_TABLE, *PRTL_HANDLE_TABLE;
19
20 VOID RtlpInitializeHandleTable(ULONG TableSize, PRTL_HANDLE_TABLE HandleTable);
21 VOID RtlpDestroyHandleTable(PRTL_HANDLE_TABLE HandleTable);
22 BOOLEAN RtlpAllocateHandle(PRTL_HANDLE_TABLE HandleTable, PVOID Object, PULONG Index);
23 BOOLEAN RtlpFreeHandle(PRTL_HANDLE_TABLE HandleTable, ULONG Index);
24 PVOID RtlpMapHandleToPointer(PRTL_HANDLE_TABLE HandleTable, ULONG Index);
25
26 #endif /* __INTERNAL_HANDLE_H */