Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygengdiobj.h
Go to the documentation of this file.
00001 /* 00002 * GDI object common header definition 00003 * 00004 */ 00005 00006 #pragma once 00007 00008 /* The first 10 entries are never used in windows, they are empty */ 00009 #define RESERVE_ENTRIES_COUNT 10 00010 00011 typedef struct _GDI_HANDLE_TABLE 00012 { 00013 /* The table must be located at the beginning of this structure so it can be 00014 * properly mapped! 00015 */ 00017 GDI_TABLE_ENTRY Entries[GDI_HANDLE_COUNT]; 00018 DEVCAPS DevCaps; // Device Capabilities. 00019 FLONG flDeviceUniq; // Device settings uniqueness. 00020 PVOID pvLangPack; // Language Pack. 00021 CFONT cfPublic[GDI_CFONT_MAX]; // Public Fonts. 00022 DWORD dwCFCount; 00023 00024 00025 } GDI_HANDLE_TABLE, *PGDI_HANDLE_TABLE; 00026 00027 extern PGDI_HANDLE_TABLE GdiHandleTable; 00028 00029 typedef PVOID PGDIOBJ; 00030 00031 typedef BOOL (NTAPI *GDICLEANUPPROC)(PVOID ObjectBody); 00032 00033 /* Every GDI Object must have this standard type of header. 00034 * It's for thread locking. */ 00035 typedef struct _BASEOBJECT 00036 { 00037 HGDIOBJ hHmgr; 00038 union { 00039 ULONG ulShareCount; /* For objects without a handle */ 00040 DWORD dwThreadId; /* Exclusive lock owner */ 00041 }; 00042 USHORT cExclusiveLock; 00043 USHORT BaseFlags; 00044 EX_PUSH_LOCK pushlock; 00045 #if DBG_ENABLE_EVENT_LOGGING 00046 SLIST_HEADER slhLog; 00047 #endif 00048 } BASEOBJECT, *POBJ; 00049 00050 enum BASEFLAGS 00051 { 00052 BASEFLAG_LOOKASIDE = 0x80, 00053 00054 /* ReactOS specific: */ 00055 BASEFLAG_READY_TO_DIE = 0x1000 00056 }; 00057 00058 typedef struct _CLIENTOBJ 00059 { 00060 BASEOBJECT BaseObject; 00061 } CLIENTOBJ, *PCLIENTOBJ; 00062 00063 #define GDIOBJFLAG_DEFAULT (0x0) 00064 #define GDIOBJFLAG_IGNOREPID (0x1) 00065 #define GDIOBJFLAG_IGNORELOCK (0x2) 00066 00067 INIT_FUNCTION 00068 NTSTATUS 00069 NTAPI 00070 InitGdiHandleTable(VOID); 00071 00072 BOOL 00073 NTAPI 00074 GreIsHandleValid( 00075 HGDIOBJ hobj); 00076 00077 BOOL 00078 NTAPI 00079 GreDeleteObject( 00080 HGDIOBJ hObject); 00081 00082 ULONG 00083 NTAPI 00084 GreGetObjectOwner( 00085 HGDIOBJ hobj); 00086 00087 BOOL 00088 NTAPI 00089 GreSetObjectOwner( 00090 HGDIOBJ hobj, 00091 ULONG ulOwner); 00092 00093 INT 00094 NTAPI 00095 GreGetObject( 00096 IN HGDIOBJ hobj, 00097 IN INT cbCount, 00098 IN PVOID pvBuffer); 00099 00100 POBJ 00101 NTAPI 00102 GDIOBJ_AllocateObject( 00103 UCHAR objt, 00104 ULONG cjSize, 00105 FLONG fl); 00106 00107 VOID 00108 NTAPI 00109 GDIOBJ_vDeleteObject( 00110 POBJ pobj); 00111 00112 POBJ 00113 NTAPI 00114 GDIOBJ_ReferenceObjectByHandle( 00115 HGDIOBJ hobj, 00116 UCHAR objt); 00117 00118 VOID 00119 NTAPI 00120 GDIOBJ_vReferenceObjectByPointer( 00121 POBJ pobj); 00122 00123 VOID 00124 NTAPI 00125 GDIOBJ_vDereferenceObject( 00126 POBJ pobj); 00127 00128 PGDIOBJ 00129 NTAPI 00130 GDIOBJ_LockObject( 00131 HGDIOBJ hobj, 00132 UCHAR objt); 00133 00134 VOID 00135 NTAPI 00136 GDIOBJ_vUnlockObject( 00137 POBJ pobj); 00138 00139 VOID 00140 NTAPI 00141 GDIOBJ_vSetObjectOwner( 00142 POBJ pobj, 00143 ULONG ulOwner); 00144 00145 BOOL 00146 NTAPI 00147 GDIOBJ_bLockMultipleObjects( 00148 ULONG ulCount, 00149 HGDIOBJ* ahObj, 00150 PGDIOBJ* apObj, 00151 UCHAR objt); 00152 00153 HGDIOBJ 00154 NTAPI 00155 GDIOBJ_hInsertObject( 00156 POBJ pobj, 00157 ULONG ulOwner); 00158 00159 VOID 00160 NTAPI 00161 GDIOBJ_vFreeObject( 00162 POBJ pobj); 00163 00164 VOID 00165 NTAPI 00166 GDIOBJ_vSetObjectAttr( 00167 POBJ pobj, 00168 PVOID pvObjAttr); 00169 00170 PVOID 00171 NTAPI 00172 GDIOBJ_pvGetObjectAttr( 00173 POBJ pobj); 00174 00175 BOOL NTAPI GDIOBJ_ConvertToStockObj(HGDIOBJ *hObj); 00176 POBJ NTAPI GDIOBJ_AllocObjWithHandle(ULONG ObjectType, ULONG cjSize); 00177 PGDIOBJ NTAPI GDIOBJ_ShareLockObj(HGDIOBJ hObj, DWORD ObjectType); 00178 PVOID NTAPI GDI_MapHandleTable(PEPROCESS Process); 00179 Generated on Sat May 26 2012 04:37:14 for ReactOS by
1.7.6.1
|