1 #ifndef __INTERNAL_HANDLE_H
2 #define __INTERNAL_HANDLE_H
5 typedef struct _RTL_HANDLE
7 struct _RTL_HANDLE *Next; /* pointer to next free handle */
8 PVOID Object; /* pointer to object */
9 } RTL_HANDLE, *PRTL_HANDLE;
11 typedef struct _RTL_HANDLE_TABLE
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;
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);
26 #endif /* __INTERNAL_HANDLE_H */