mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-24 20:35:25 +00:00
133 lines
4.4 KiB
C
133 lines
4.4 KiB
C
|
/*
|
||
|
* This file is part of the Process Hacker project - https://processhacker.sourceforge.io/
|
||
|
*
|
||
|
* You can redistribute this file and/or modify it under the terms of the
|
||
|
* Attribution 4.0 International (CC BY 4.0) license.
|
||
|
*
|
||
|
* You must give appropriate credit, provide a link to the license, and
|
||
|
* indicate if changes were made. You may do so in any reasonable manner, but
|
||
|
* not in any way that suggests the licensor endorses you or your use.
|
||
|
*/
|
||
|
|
||
|
#ifndef _NTGDI_H
|
||
|
#define _NTGDI_H
|
||
|
|
||
|
#define GDI_MAX_HANDLE_COUNT 0x4000
|
||
|
|
||
|
#define GDI_HANDLE_INDEX_SHIFT 0
|
||
|
#define GDI_HANDLE_INDEX_BITS 16
|
||
|
#define GDI_HANDLE_INDEX_MASK 0xffff
|
||
|
|
||
|
#define GDI_HANDLE_TYPE_SHIFT 16
|
||
|
#define GDI_HANDLE_TYPE_BITS 5
|
||
|
#define GDI_HANDLE_TYPE_MASK 0x1f
|
||
|
|
||
|
#define GDI_HANDLE_ALTTYPE_SHIFT 21
|
||
|
#define GDI_HANDLE_ALTTYPE_BITS 2
|
||
|
#define GDI_HANDLE_ALTTYPE_MASK 0x3
|
||
|
|
||
|
#define GDI_HANDLE_STOCK_SHIFT 23
|
||
|
#define GDI_HANDLE_STOCK_BITS 1
|
||
|
#define GDI_HANDLE_STOCK_MASK 0x1
|
||
|
|
||
|
#define GDI_HANDLE_UNIQUE_SHIFT 24
|
||
|
#define GDI_HANDLE_UNIQUE_BITS 8
|
||
|
#define GDI_HANDLE_UNIQUE_MASK 0xff
|
||
|
|
||
|
#define GDI_HANDLE_INDEX(Handle) ((ULONG)(Handle) & GDI_HANDLE_INDEX_MASK)
|
||
|
#define GDI_HANDLE_TYPE(Handle) (((ULONG)(Handle) >> GDI_HANDLE_TYPE_SHIFT) & GDI_HANDLE_TYPE_MASK)
|
||
|
#define GDI_HANDLE_ALTTYPE(Handle) (((ULONG)(Handle) >> GDI_HANDLE_ALTTYPE_SHIFT) & GDI_HANDLE_ALTTYPE_MASK)
|
||
|
#define GDI_HANDLE_STOCK(Handle) (((ULONG)(Handle) >> GDI_HANDLE_STOCK_SHIFT)) & GDI_HANDLE_STOCK_MASK)
|
||
|
|
||
|
#define GDI_MAKE_HANDLE(Index, Unique) ((ULONG)(((ULONG)(Unique) << GDI_HANDLE_INDEX_BITS) | (ULONG)(Index)))
|
||
|
|
||
|
// GDI server-side types
|
||
|
|
||
|
#define GDI_DEF_TYPE 0 // invalid handle
|
||
|
#define GDI_DC_TYPE 1
|
||
|
#define GDI_DD_DIRECTDRAW_TYPE 2
|
||
|
#define GDI_DD_SURFACE_TYPE 3
|
||
|
#define GDI_RGN_TYPE 4
|
||
|
#define GDI_SURF_TYPE 5
|
||
|
#define GDI_CLIENTOBJ_TYPE 6
|
||
|
#define GDI_PATH_TYPE 7
|
||
|
#define GDI_PAL_TYPE 8
|
||
|
#define GDI_ICMLCS_TYPE 9
|
||
|
#define GDI_LFONT_TYPE 10
|
||
|
#define GDI_RFONT_TYPE 11
|
||
|
#define GDI_PFE_TYPE 12
|
||
|
#define GDI_PFT_TYPE 13
|
||
|
#define GDI_ICMCXF_TYPE 14
|
||
|
#define GDI_ICMDLL_TYPE 15
|
||
|
#define GDI_BRUSH_TYPE 16
|
||
|
#define GDI_PFF_TYPE 17 // unused
|
||
|
#define GDI_CACHE_TYPE 18 // unused
|
||
|
#define GDI_SPACE_TYPE 19
|
||
|
#define GDI_DBRUSH_TYPE 20 // unused
|
||
|
#define GDI_META_TYPE 21
|
||
|
#define GDI_EFSTATE_TYPE 22
|
||
|
#define GDI_BMFD_TYPE 23 // unused
|
||
|
#define GDI_VTFD_TYPE 24 // unused
|
||
|
#define GDI_TTFD_TYPE 25 // unused
|
||
|
#define GDI_RC_TYPE 26 // unused
|
||
|
#define GDI_TEMP_TYPE 27 // unused
|
||
|
#define GDI_DRVOBJ_TYPE 28
|
||
|
#define GDI_DCIOBJ_TYPE 29 // unused
|
||
|
#define GDI_SPOOL_TYPE 30
|
||
|
|
||
|
// GDI client-side types
|
||
|
|
||
|
#define GDI_CLIENT_TYPE_FROM_HANDLE(Handle) ((ULONG)(Handle) & ((GDI_HANDLE_ALTTYPE_MASK << GDI_HANDLE_ALTTYPE_SHIFT) | \
|
||
|
(GDI_HANDLE_TYPE_MASK << GDI_HANDLE_TYPE_SHIFT)))
|
||
|
#define GDI_CLIENT_TYPE_FROM_UNIQUE(Unique) GDI_CLIENT_TYPE_FROM_HANDLE((ULONG)(Unique) << 16)
|
||
|
|
||
|
#define GDI_ALTTYPE_1 (1 << GDI_HANDLE_ALTTYPE_SHIFT)
|
||
|
#define GDI_ALTTYPE_2 (2 << GDI_HANDLE_ALTTYPE_SHIFT)
|
||
|
#define GDI_ALTTYPE_3 (3 << GDI_HANDLE_ALTTYPE_SHIFT)
|
||
|
|
||
|
#define GDI_CLIENT_BITMAP_TYPE (GDI_SURF_TYPE << GDI_HANDLE_TYPE_SHIFT)
|
||
|
#define GDI_CLIENT_BRUSH_TYPE (GDI_BRUSH_TYPE << GDI_HANDLE_TYPE_SHIFT)
|
||
|
#define GDI_CLIENT_CLIENTOBJ_TYPE (GDI_CLIENTOBJ_TYPE << GDI_HANDLE_TYPE_SHIFT)
|
||
|
#define GDI_CLIENT_DC_TYPE (GDI_DC_TYPE << GDI_HANDLE_TYPE_SHIFT)
|
||
|
#define GDI_CLIENT_FONT_TYPE (GDI_LFONT_TYPE << GDI_HANDLE_TYPE_SHIFT)
|
||
|
#define GDI_CLIENT_PALETTE_TYPE (GDI_PAL_TYPE << GDI_HANDLE_TYPE_SHIFT)
|
||
|
#define GDI_CLIENT_REGION_TYPE (GDI_RGN_TYPE << GDI_HANDLE_TYPE_SHIFT)
|
||
|
|
||
|
#define GDI_CLIENT_ALTDC_TYPE (GDI_CLIENT_DC_TYPE | GDI_ALTTYPE_1)
|
||
|
#define GDI_CLIENT_DIBSECTION_TYPE (GDI_CLIENT_BITMAP_TYPE | GDI_ALTTYPE_1)
|
||
|
#define GDI_CLIENT_EXTPEN_TYPE (GDI_CLIENT_BRUSH_TYPE | GDI_ALTTYPE_2)
|
||
|
#define GDI_CLIENT_METADC16_TYPE (GDI_CLIENT_CLIENTOBJ_TYPE | GDI_ALTTYPE_3)
|
||
|
#define GDI_CLIENT_METAFILE_TYPE (GDI_CLIENT_CLIENTOBJ_TYPE | GDI_ALTTYPE_2)
|
||
|
#define GDI_CLIENT_METAFILE16_TYPE (GDI_CLIENT_CLIENTOBJ_TYPE | GDI_ALTTYPE_1)
|
||
|
#define GDI_CLIENT_PEN_TYPE (GDI_CLIENT_BRUSH_TYPE | GDI_ALTTYPE_1)
|
||
|
|
||
|
typedef struct _GDI_HANDLE_ENTRY
|
||
|
{
|
||
|
union
|
||
|
{
|
||
|
PVOID Object;
|
||
|
PVOID NextFree;
|
||
|
};
|
||
|
union
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
USHORT ProcessId;
|
||
|
USHORT Lock : 1;
|
||
|
USHORT Count : 15;
|
||
|
};
|
||
|
ULONG Value;
|
||
|
} Owner;
|
||
|
USHORT Unique;
|
||
|
UCHAR Type;
|
||
|
UCHAR Flags;
|
||
|
PVOID UserPointer;
|
||
|
} GDI_HANDLE_ENTRY, *PGDI_HANDLE_ENTRY;
|
||
|
|
||
|
typedef struct _GDI_SHARED_MEMORY
|
||
|
{
|
||
|
GDI_HANDLE_ENTRY Handles[GDI_MAX_HANDLE_COUNT];
|
||
|
} GDI_SHARED_MEMORY, *PGDI_SHARED_MEMORY;
|
||
|
|
||
|
#endif
|