Hi!
Timo Kreuzer wrote:
#pragma pack(push,1)
typedef struct
{
PVOID KernelData; /* Points to the kernel mode structure */
union
{
DWORD ProcessId; /* process id that created the object, 0 for
kernel objects */
struct
{
unsigned ProcessId16: 16;
unsigned Unused: 16;
};
};
union
{
ULONG Type;
struct
{
union
{
unsigned TypeLower: 16;
struct
{
union
{
unsigned HandleTypeStock: 8;
struct
{
unsigned HandleType: 7;
unsigned StockBit: 1;
};
};
unsigned ReuseCount: 8;
};
};
union
{
unsigned TypeUpper: 16;
struct
{
unsigned StorageType: 8; /* PEN uses same value as
BRUSH here, no stock bit */
unsigned Flags: 8;
};
};
};
};
PVOID UserData; /* Points to the user mode structure, usually NULL
though */
} GDI_TABLE_ENTRY, *PGDI_TABLE_ENTRY;;
typedef union
{
HGDIOBJ Handle;
struct
{
unsigned Index: 16;
union
{
unsigned Upper: 16;
struct
{
union
{
unsigned HandleTypeStock: 8;
struct
{
unsigned HandleType: 7;
unsigned StockBit: 1;
};
};
unsigned ReuseCount: 8;
};
};
};
} GDIHANDLE, *PGDIHANDLE;
#pragma pack(pop)
Okay! 8^D
James