1 #ifndef __WIN32K_OBJECT_H
2 #define __WIN32K_OBJECT_H
12 typedef struct _USER_OBJECT_HEADER
14 * Header for user object
17 USER_OBJECT_TYPE Type;
21 } USER_OBJECT_HEADER, *PUSER_OBJECT_HEADER;
23 typedef struct _USER_HANDLE
26 } USER_HANDLE, *PUSER_HANDLE;
28 #define HANDLE_BLOCK_ENTRIES ((PAGE_SIZE-sizeof(LIST_ENTRY))/sizeof(USER_HANDLE))
30 typedef struct _USER_HANDLE_BLOCK
33 USER_HANDLE Handles[HANDLE_BLOCK_ENTRIES];
34 } USER_HANDLE_BLOCK, *PUSER_HANDLE_BLOCK;
36 typedef struct _USER_HANDLE_TABLE
40 } USER_HANDLE_TABLE, *PUSER_HANDLE_TABLE;
60 ObmReferenceObjectByPointer(
62 USER_OBJECT_TYPE ObjectType);
66 PUSER_HANDLE_TABLE HandleTable,
68 USER_OBJECT_TYPE ObjectType,
73 PUSER_HANDLE_TABLE HandleTable,
75 PHANDLE HandleReturn);
78 ObmReferenceObjectByHandle(
79 PUSER_HANDLE_TABLE HandleTable,
81 USER_OBJECT_TYPE ObjectType,
86 PUSER_HANDLE_TABLE HandleTable,
90 ObmInitializeHandleTable(
91 PUSER_HANDLE_TABLE HandleTable);
95 PUSER_HANDLE_TABLE HandleTable);
98 ObmCreateHandleTable(VOID);
101 ObmDestroyHandleTable(
102 PUSER_HANDLE_TABLE HandleTable);
104 ULONG CreateGDIHandle(ULONG InternalSize, ULONG UserSize);
105 VOID FreeGDIHandle(ULONG Handle);
107 PVOID AccessUserObject(ULONG Handle);
108 PVOID AccessInternalObject(ULONG Handle);
110 PVOID AccessInternalObjectFromUserObject(PVOID UserObject);
111 ULONG AccessHandleFromUserObject(PVOID UserObject);
113 VOID InitEngHandleTable( void );
115 #endif /* __WIN32K_OBJECT_H */