ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

gdiobj.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.