12#define GDI_HANDLE_COUNT 0x10000
13#define GDI_GLOBAL_PROCESS (0x0)
16#define GDI_HANDLE_INDEX_MASK (GDI_HANDLE_COUNT - 1)
17#define GDI_HANDLE_TYPE_MASK 0x007f0000
18#define GDI_HANDLE_BASETYPE_MASK 0x001f0000
19#define GDI_HANDLE_STOCK_MASK 0x00800000
20#define GDI_HANDLE_REUSE_MASK 0xff000000
21#define GDI_HANDLE_REUSECNT_SHIFT 24
22#define GDI_HANDLE_UPPER_MASK 0x0000ffff
25#define GDI_HANDLE_CREATE(i, t) \
26 ((HANDLE)(((ULONG_PTR)(i) & GDI_HANDLE_INDEX_MASK) | ((t) << 16)))
28#define GDI_HANDLE_GET_INDEX(h) \
29 (((ULONG_PTR)(h)) & GDI_HANDLE_INDEX_MASK)
31#define GDI_HANDLE_GET_TYPE(h) \
32 (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK)
34#define GDI_HANDLE_IS_TYPE(h, t) \
35 ((t) == (((ULONG_PTR)(h)) & GDI_HANDLE_TYPE_MASK))
37#define GDI_HANDLE_IS_STOCKOBJ(h) \
38 (0 != (((ULONG_PTR)(h)) & GDI_HANDLE_STOCK_MASK))
40#define GDI_HANDLE_SET_STOCKOBJ(h) \
41 ((h) = (HANDLE)(((ULONG_PTR)(h)) | GDI_HANDLE_STOCK_MASK))
43#define GDI_HANDLE_GET_UPPER(h) \
44 (((ULONG_PTR)(h)) & GDI_HANDLE_UPPER_MASK)
46#define GDI_OBJECT_TYPE_DC 0x00010000
47#define GDI_OBJECT_TYPE_REGION 0x00040000
48#define GDI_OBJECT_TYPE_BITMAP 0x00050000
49#define GDI_OBJECT_TYPE_PALETTE 0x00080000
50#define GDI_OBJECT_TYPE_FONT 0x000a0000
51#define GDI_OBJECT_TYPE_PFE 0x000c0000
52#define GDI_OBJECT_TYPE_BRUSH 0x00100000
53#define GDI_OBJECT_TYPE_EMF 0x00210000
54#define GDI_OBJECT_TYPE_PEN 0x00300000
55#define GDI_OBJECT_TYPE_EXTPEN 0x00500000
56#define GDI_OBJECT_TYPE_COLORSPACE 0x00090000
57#define GDI_OBJECT_TYPE_METADC 0x00660000
58#define GDI_OBJECT_TYPE_METAFILE 0x00260000
59#define GDI_OBJECT_TYPE_ENHMETAFILE 0x00460000
61#define GDI_OBJECT_TYPE_ENHMETADC 0x00740000
62#define GDI_OBJECT_TYPE_MEMDC 0x00750000
63#define GDI_OBJECT_TYPE_DCE 0x00770000
64#define GDI_OBJECT_TYPE_DONTCARE 0x007f0000
66#define GDI_OBJECT_TYPE_SILENT 0x80000000
struct _GDI_TABLE_ENTRY * PGDI_TABLE_ENTRY
PGDI_TABLE_ENTRY(CALLBACK * GDIQUERYPROC)(void)
struct _GDI_TABLE_ENTRY GDI_TABLE_ENTRY