1 /* $Id: userobj.h,v 1.2 2003/05/18 17:22:31 ea Exp $
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * PURPOSE: USER Object manager interface definition
6 * FILE: include/win32k/userobj.h
7 * PROGRAMER: Rex Jolliff (rex@lvcablemodem.com)
11 #ifndef __WIN32K_USEROBJ_H
12 #define __WIN32K_USEROBJ_H
14 #include <ddk/ntddk.h>
16 #define UO_CLASS_MAGIC 0x5141
17 #define UO_WINDOW_MAGIC 0x5142
18 #define UO_MAGIC_DONTCARE 0xffff
20 #define USER_OBJECT_TAG (ULONG)(('W'<<0) + ('3'<<8) + ('2'<<16) + ('U'<<24))
22 typedef struct tag_USER_OBJECT_HEADER
28 } USER_OBJECT_HEADER
, *PUSER_OBJECT_HEADER
;
30 typedef PVOID PUSER_OBJECT
;
31 typedef HANDLE HUSEROBJ
;
33 #define UserObjectHeaderToBody(header) ((PUSER_OBJECT)(((PCHAR)header)+sizeof(USER_OBJECT_HEADER)))
34 #define UserObjectBodyToHeader(body) ((PUSER_OBJECT_HEADER)(((PCHAR)body)-sizeof(USER_OBJECT_HEADER)))
35 #define UserObjectHeaderToHandle(header) ((HUSEROBJ)header)
36 #define UserObjectHandleToHeader(handle) ((HUSEROBJ)handle)
38 PUSER_OBJECT FASTCALL
USEROBJ_AllocObject (WORD size
, WORD magic
);
39 BOOL FASTCALL
USEROBJ_FreeObject (PUSER_OBJECT object
, WORD magic
);
40 HUSEROBJ FASTCALL
USEROBJ_PtrToHandle (PUSER_OBJECT object
, WORD magic
);
41 PUSER_OBJECT FASTCALL
USEROBJ_HandleToPtr (HUSEROBJ object
, WORD magic
);
42 BOOL FASTCALL
USEROBJ_LockObject (HUSEROBJ Obj
);
43 BOOL FASTCALL
USEROBJ_UnlockObject (HUSEROBJ Obj
);