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